summaryrefslogtreecommitdiff
path: root/src/Data/Name.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Name.hs')
-rw-r--r--src/Data/Name.hs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/Data/Name.hs b/src/Data/Name.hs
new file mode 100644
index 0000000..4553cdc
--- /dev/null
+++ b/src/Data/Name.hs
@@ -0,0 +1,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)