@@ -14,11 +14,11 @@ infixl 5 >>=
1414class Applicative m => Monad (m : Type -> Type) where
1515 (>>=) : m a -> (a -> m b) -> m b
1616
17−class Monad m => VerifiedMonad (m : Type -> Type) where
18− total lIdentity : (f : a -> m b) -> (x : a) -> return x >>= f = f x
19− total rIdentity : (ma : m a) -> ma >>= return = ma
20− total associativity : (ma : m a) -> (f : a -> m b) -> (g : b -> m c) ->
21− (ma >>= f) >>= g = ma >>= (\x => f x >>= g)
17+class (Monad m, VerifiedApplicative m) => VerifiedMonad (m : Type -> Type) where
18+ monadLeftIdentity : (x : a) -> (f : a -> m b) -> return x >>= f = f x
19+ monadRightIdentity : (mx : m a) -> mx >>= return = mx
20+ monadAssociativity : (mx : m a) -> (f : a -> m b) -> (g : b -> m c) ->
21+ (mx >>= f) >>= g = mx >>= (\x => f x >>= g)
2222
2323instance Monad id where
2424 a >>= f = f a