IO

LA home
Computing
FP
 Haskell
  Haskell98
   IO
    Monad
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
www:

Haskell:
(:) cons
[x1,...] list
[ ]list
(++) append
\ λ :-)
:: has type
Compared

↑ © L. Allison, www.allisons.org/ll/   (or as otherwise indicated).
Created with "vi (Linux)",  charset=iso-8859-1,   fetched Tuesday, 07-Jul-2020 09:46:53 EDT.

Free: Linux, Ubuntu operating-sys, OpenOffice office-suite, The GIMP ~photoshop, Firefox web-browser, FlashBlock flash on/off.