@@ -88,6 +88,10 @@ class Monad m => MonadPlus (m : Set -> Set) where {
88 mzero : m a;
88 mzero : m a;
91+class Monad m => MonadFail (m : Set -> Set) where {
92+ fail : String -> m ();
91instance Monad IO where {
95instance Monad IO where {
92 return t = io_return t;
96 return t = io_return t;
93 b >>= k = io_bind b k;
97 b >>= k = io_bind b k;
@@ -113,6 +117,15 @@ instance Monad List where {
113 m >>= f = concatMap f m;
117 m >>= f = concatMap f m;
120+instance MonadPlus List where {
125+guard : MonadPlus m => Bool -> m ();
126+guard True = return ();
116---- Functors
129---- Functors
118class Functor (f : Set -> Set) where {
131class Functor (f : Set -> Set) where {