1 definition module GenMonad
3 import StdGeneric, StdMaybe, StdList
6 ret :: a:a -> m:(m a:a), [m <= a]
7 (>>=) infixl 5 :: u:(m .a) v:(.a -> u:(m .b)) -> u:(m .b), [u <= v]
9 :: StMonad s a = { st_monad :: .(s -> *(a, s)) }
11 instance Monad Maybe, [], (StMonad .s)
13 generic gMapLM a b :: a:a -> m:(m b:b) | Monad m, [m <= b]
14 derive gMapLM c, PAIR, EITHER, CONS, FIELD, OBJECT
15 derive gMapLM [], Maybe, (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,)
17 generic gMapRM a b :: a:a -> m:(m b:b) | Monad m, [m <= b]
18 derive gMapRM c, PAIR, EITHER, CONS, FIELD, OBJECT
19 derive gMapRM [], Maybe, (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,)