IO
- s.7.1 p.98 RR, I/O
- Output Functions ...
putChar :: Char -> IO () putStr :: String -> IO () putStrLn :: String -> IO () -- adds a newline print :: Show a => a -> IO ()
Recall that (IO τ) is a Monad (s.7.2 pp.99 RR), so that >>, etc. are applicable to it. The " main program", main, must be of type (IO τ) for some type τ.
main = putStr "Hello " >> putStr "World." --------------- --------------- IO () IO () ---------------------------------- IO ()
- Input Functions ...
getChar :: IO Char -- exception on EOF getLine :: IO String -- ditto getContents :: IO String interact :: (String -> String) -> IO () readIO :: Read a => String -> IO a readLn :: Read a => IO a
In input step passes a value on to the next step after >>=
... getChar >>= putChar ... ------- ------- IO Char Char->IO() ----------------------- IO ()
- IO type, s.8.1. prelude, p.111, RR
-
- data IO a = ...abstract
- instance Functor IO where
- fmap f x = x >>= (return . f)
- instance Monad IO where
- (>>=) = ...
- return = ...
- fail s = ioError (userError s)
- data IO a = ...abstract
RR = revised report, CUP, 2003.
7/2002, 11/2005