Ausgabe von Integer an stdout in Haskell

8

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.

    
Iulius Curt 21.04.2012, 23:46
quelle

2 Antworten

12

nth ist eine Funktion, keine IO Aktion:

%Vor%     
Thomas M. DuBuisson 21.04.2012, 23:55
quelle
4

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

%Vor%

Aber nth ist kein monadischer Wert, daher ist es nicht sinnvoll, die Funktion (>>=) anzuwenden, die etwas vom Typ IO a erfordert.

    
rotskoff 22.04.2012 05:45
quelle

Tags und Links