@@ -5,6 +5,7 @@ module Prelude.Monad
5import Builtins
5import Builtins
6import Prelude.List
6import Prelude.List
7import Prelude.Applicative
7import Prelude.Applicative
9%access public
10%access public
@@ -13,6 +14,9 @@ infixl 5 >>=
13class Applicative m => Monad (m : Type -> Type) where
14class Applicative m => Monad (m : Type -> Type) where
14 (>>=) : m a -> (a -> m b) -> m b
15 (>>=) : m a -> (a -> m b) -> m b
17+instance Monad id where
16||| Also called `join` or mu
20||| Also called `join` or mu
17flatten : Monad m => m (m a) -> m a
21flatten : Monad m => m (m a) -> m a
18flatten a = a >>= id
22flatten a = a >>= id