+++ /dev/null
-
-{-# OPTIONS -fno-implicit-prelude -#include "cbits/stgio.h" #-}
-
-
-module Test19 where
-
-import PrelST
-import PrelBase
-import PrelErr
-
-newtype IIO a = IIO (State# RealWorld -> (# State# RealWorld, a #))
-
-unIIO :: IIO a -> (State# RealWorld -> (# State# RealWorld, a #))
-unIIO (IIO a) = a
-
-instance Functor IIO where
- fmap f x = x >>= (return . f)
-
-instance Monad IIO where
- {-# INLINE return #-}
- {-# INLINE (>>) #-}
- {-# INLINE (>>=) #-}
- m >> k = m >>= \ _ -> k
- return x = returnIIO x
-
- m >>= k = bindIIO m k
- fail s = error s -- not ioError?
-
-
-bindIIO :: IIO a -> (a -> IIO b) -> IIO b
-bindIIO (IIO m) k = IIO ( \ s ->
- case m s of
- (# new_s, a #) -> unIIO (k a) new_s
- )
-
-returnIIO :: a -> IIO a
-returnIIO x = IIO (\ s -> (# s, x #))