summaryrefslogtreecommitdiff
path: root/transfer/lib/maybe.tr
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-30 18:57:23 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-30 18:57:23 +0000
commitd92a26fc9be92fb269888947a8b26aa12883065e (patch)
treed74e451a1de42e95db949b0429d96ccb3178acfa /transfer/lib/maybe.tr
parent12ca29b32b50fd924c5f69a30d204e4332dff4f9 (diff)
Added monad isntances for List and Maybe.
Diffstat (limited to 'transfer/lib/maybe.tr')
-rw-r--r--transfer/lib/maybe.tr15
1 files changed, 14 insertions, 1 deletions
diff --git a/transfer/lib/maybe.tr b/transfer/lib/maybe.tr
index 02d7fe56d..2b7beee9a 100644
--- a/transfer/lib/maybe.tr
+++ b/transfer/lib/maybe.tr
@@ -1,3 +1,5 @@
+import prelude
+
data Maybe : Type -> Type where
Nothing : (A : Type) -> Maybe A
Just : (A : Type) -> A -> Maybe A
@@ -8,4 +10,15 @@ fromMaybe _ _ (Just x) = x
maybe : (A : Type) -> (B : Type) -> B -> (A -> B) -> Maybe A -> A
maybe _ _ x _ Nothing = x
-maybe _ _ _ f (Just x) = f x \ No newline at end of file
+maybe _ _ _ f (Just x) = f x
+
+-- Instances:
+
+monad_Maybe : Monad Maybe
+monad_Maybe =
+ rec return = Just
+ bind = \A -> \B -> \m -> \k ->
+ case m of
+ Nothing _ -> Nothing B
+ Just _ x -> k x
+