|
- 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)
RR = revised report, CUP, 2003.
7/2002, 11/2005
|
Haskell:
(:) | cons |
[x1,...] | list |
[ ] | list |
(++) | append |
\ | λ :-) |
:: | has type |
Compared
|
|
|