ghci Sonderfall für Applicative?

8

In ghci:

%Vor%

Bedeutet dies, dass ghci Applicative ausführt und das Ergebnis anzeigt, genau wie IO ?

Beachten Sie, dass pure () und pure (+1) nichts ausgibt.

    
gawi 31.10.2011, 02:30
quelle

1 Antwort

11

Sie erhalten das gleiche Verhalten, wenn Sie return anstelle von pure verwenden. Um herauszufinden, was zu tun ist, muss ghci einen Typ für den gegebenen Ausdruck auswählen. Die Standardregeln von ghci sind so, dass, wenn keine anderen Einschränkungen vorhanden sind, IO für eine Applicative oder Monad Instanz ausgewählt wird. Daher interpretiert pure 1 als Ausdruck des Typs IO Integer . Ausdrücke vom Typ IO a , die an der Eingabeaufforderung eingegeben wurden, werden ausgeführt und ihre Ergebnisse werden gedruckt, wenn 1. a eine Show -Instanz und 2. a nicht () hat. Die Eingabe von pure 1 an der Eingabeaufforderung führt zu

%Vor%

wird ausgeführt (und die magische Variable it an die zurückgegebene v gebunden). Für pure () gilt der Spezialfall, da () als uninteressant gilt, also nur return () ausgeführt wird und it an () gebunden ist, für pure (+1) wird eine Funktion zurückgegeben, es gibt keine Show -Instanz Für Funktionen im Bereich, also wird nichts gedruckt. Jedoch,

%Vor%

mit einer Show -Instanz für Funktionen im Bereich, wird gedruckt (nicht, dass es informativ ist), und die Funktion kann dann verwendet werden (letzteres ist unabhängig von einer Show Instanz, die sich natürlich im Bereich befindet).

    
Daniel Fischer 31.10.2011, 03:05
quelle

Tags und Links