Ticket #5908: MyMonad.hs

File MyMonad.hs, 403 bytes (added by scooty-puff, 4 years ago)

Working MyMonad.hs

Line 
1{-# LANGUAGE ExplicitForAll, NoImplicitPrelude #-}
2module MyMonad (Monad (..)) where
3
4import Prelude (String, error)
5
6class Monad m where
7  (>>=) :: forall e ex x a b . m e ex a -> (a -> m ex x b) -> m e x b
8  (>>) :: forall e ex x a b . m e ex a -> m ex x b -> m e x b
9  return :: a -> m ex ex a
10  fail :: String -> m e x a
11 
12  {-# INLINE (>>) #-}
13  m >> k = m >>= \ _ -> k
14  fail = error