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