blob: 4553cdc0b9d42f3d91d4f0e242e579fd91329bce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
module Text.Name
( Name (..)
) where
data Name a = Name
{ lastName :: !a
, firstName :: !a
, middleName :: !(Maybe a)
} deriving (Eq, Foldable, Functor, Generic, Ord, Show, Traversable)
instance Applicative Name where
pure x = Name x x (pure x)
Name l f m <*> Name x y z = Name (l x) (f y) (m <*> z)
|