+++ /dev/null
-import "Prelude"\r
-\r
-data RealWorld = RealWorld\r
-data IO a = IO (RealWorld -> (RealWorld, a))\r
-\r
-@inline\r
-unIO (IO m) = m \r
-\r
-instance Functor IO where\r
- @inline\r
- fmap f x = x >>= (return . f)\r
-\r
-instance Monad IO where\r
- @inline\r
- return x = IO (\s -> (s, x))\r
- \r
- @inline\r
- (IO m) >>= f = IO (\s -> do\r
- (newS, v) = m s\r
- unIO (f v) newS \r
- )\r
-\r
-@inline\r
-runIO :: IO a -> a\r
-runIO m = snd (unIO m RealWorld)\r
-\r
-main = runIO (return (13 :: Integer))\r
---\r
-13\r