data IO a -- abstract instance Monad IO -- eingebaut readFile :: FilePath -> IO String putStrLn :: String -> IO ()
Alle „Funktionen``,
deren Resultat von der Außenwelt (Systemzustand)
abhängt, haben Resultattyp IO ...
,
sie sind tatsächlich Aktionen.
Am Typ einer Funktion erkennt man ihre möglichen Wirkungen bzw. deren garantierte Abwesenheit.
main :: IO () main = do cs <- readFile "foo.bar" ; putStrLn cs