summaryrefslogtreecommitdiff
path: root/src/Data/Name.hs
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)