data IO -- abstract readFile :: FilePath -> IO String putStrLn :: String -> IO () instance Functor IO ; instance Monad IO
Alle „Funktionen``, deren Resultat von der Außenwelt
(Systemzustand) abhängt, haben Resultattyp IO ...
Am Typ einer Funktion erkennt man ihre möglichen (schädlichen) Wirkungen bzw. deren garantierte Abwesenheit.
Wegen der Monad-Instanz: benutze do-Notation
do cs <- readFile "foo.bar" ; putStrLn cs