Die Art der getChar
ist IO Char
zu lesen. Es ist keine Funktion, die Char
zurückgibt; Es handelt sich um eine IO-Aktion, die bei Ausführung Char
zurückgibt. (Während subtil, diese Unterscheidung ist von entscheidender Bedeutung für das Verständnis, wie Haskell IO führt mit reinen Funktionen.)
Die Linie
let x = getChar
bindet nur den Namen x
auf den gleichen IO Aktion (die man später sehen können, indem Sie :t x
in GHCi). Das Eingeben von x
führt dann diese Aktion aus; GHCI wartet darauf, dass Sie ein Zeichen eingeben, dann gibt es das Zeichen sofort zurück.
Um getChar
in einem Programm zu verwenden, müssen Sie es innerhalb einer IO-Monade verwenden, mit so etwas wie
main = do ch <- getChar
print ch
oder
main = getChar >>= print
nicht zu weit in dieses Tutorial sie in einem Zeichen lesen: https://www.haskell.org/tutorial/io.html –