Ich habe eine einfache Funktion wie:
%Vor%Und ich versuche, das Ergebnis wie folgt zu drucken:
%Vor%Der folgende Fehler wird generiert:
%Vor% Auch versucht mit putStrLn
und vielen anderen Kombinationen ohne Glück.
Ich kann es nicht herausfinden und ich brauche Hilfe, weil ich nicht ganz verstehe, wie Sachen um diese IO
s funktionieren.
Die do
Syntax entpackt etwas innerhalb einer Monade. Alles auf der rechten Seite des Pfeils muss innerhalb der IO-Monade leben, ansonsten prüfen die Typen nicht. Ein IO Integer
wäre in Ihrem Programm in Ordnung. do
ist syntaktischer Zucker für die explizitere Funktion, die wie folgt geschrieben würde:
Erinnern Sie sich, dass (>>=) :: m a -> (a -> m b) -> m b
Aber nth
ist kein monadischer Wert, daher ist es nicht sinnvoll, die Funktion (>>=)
anzuwenden, die etwas vom Typ IO a
erfordert.