summaryrefslogtreecommitdiff
path: root/applicative/h1.hs
diff options
context:
space:
mode:
Diffstat (limited to 'applicative/h1.hs')
-rw-r--r--applicative/h1.hs14
1 files changed, 14 insertions, 0 deletions
diff --git a/applicative/h1.hs b/applicative/h1.hs
new file mode 100644
index 0000000..b13c33d
--- /dev/null
+++ b/applicative/h1.hs
@@ -0,0 +1,14 @@
+import Control.Applicative
+
+data MyMaybe a = MyNothing | MyJust a
+ deriving (Show)
+
+instance Functor MyMaybe where
+ fmap _ MyNothing = MyNothing
+ fmap f (MyJust x) = MyJust (f x)
+
+instance Applicative MyMaybe where
+ pure x = MyJust x
+ MyNothing <*> _ = MyNothing
+ _ <*> MyNothing = MyNothing
+ (MyJust f) <*> (MyJust g) = MyJust (f g)