Ticket #1072: WrapIOMonad.hs

File WrapIOMonad.hs, 318 bytes (added by guest, 9 years ago)
Line 
1module WrapIOMonad ( WrapIO, WrapIO2 )
2where
3
4newtype WrapIO e a =
5  MkWrapIO { unwrap :: IO a }
6
7type WrapIO2 a = WrapIO String a
8
9instance Monad (WrapIO e) where
10  return x = MkWrapIO (return x)
11
12  m >>= f  = MkWrapIO (do x <- unwrap m
13                          unwrap (f x) )
14
15  fail str = error str