+++ /dev/null
-definition module GenMonad\r
-\r
-import StdGeneric, StdMaybe, StdList\r
-\r
-class Monad m where\r
- ret :: a:a -> m:(m a:a), [m <= a]\r
- (>>=) infixl 5 :: u:(m .a) v:(.a -> u:(m .b)) -> u:(m .b), [u <= v]\r
- \r
-:: StMonad s a = { st_monad :: .(s -> *(a, s)) }\r
-derive bimap StMonad\r
-instance Monad Maybe, [], (StMonad .s)\r
-\r
-generic gMapLM a b :: a:a -> m:(m b:b) | Monad m, [m <= b]\r
-derive gMapLM c, PAIR, EITHER, CONS, FIELD, OBJECT\r
-derive gMapLM [], Maybe, (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,)\r
-\r
-generic gMapRM a b :: a:a -> m:(m b:b) | Monad m, [m <= b]\r
-derive gMapRM c, PAIR, EITHER, CONS, FIELD, OBJECT\r
-derive gMapRM [], Maybe, (,), (,,), (,,,), (,,,,), (,,,,,), (,,,,,,), (,,,,,,,)\r
-\r