Syntaxregeln für Haskell-Infix-Datentypkonstruktoren

8

Ich versuche, einen Haskell-Datentyp ein bisschen wie ein Python-Wörterbuch, ein Ruby-Hash oder ein JavaScript-Objekt zu machen, in dem eine Zeichenfolge mit einem Wert wie folgt verknüpft ist:

%Vor%

Der obige Code funktioniert einwandfrei. Allerdings hätte ich gerne einen etwas netteren Konstruktor, also habe ich versucht, es so zu definieren:

%Vor%

Dies ist fehlgeschlagen. Ich habe es versucht:

%Vor%

Erneut ist es fehlgeschlagen. Ich weiß, dass ~ eine besondere Bedeutung in Haskell hat, und GHCi erlaubt immer noch den Operator ~> , aber ich habe immer noch einen anderen Weg versucht:

%Vor%

Und noch ein Fehler aufgrund eines Parse-Fehlers. Ich finde das verwirrend, weil dies aus unerklärlichen Gründen funktioniert:

%Vor%

Bedeutet dies, dass es bestimmte Regeln für die Zeichen gibt, die in Infix-Typ-Konstruktoren auftreten können, oder handelt es sich um eine Fehlinterpretation. Ich bin kein Neuling in Haskell, und ich bin mir bewusst, dass es idiomatischer wäre, den ersten Konstruktor zu verwenden, aber dieser hier stößt mich an, und es scheint ein wichtiger Teil von Haskell zu sein, dass ich vermisse.

    
AJFarmar 18.11.2014, 17:11
quelle

1 Antwort

9

Jeder Operator, der mit einem Doppelpunkt : beginnt, ist ein Typkonstruktor oder ein Datenkonstruktor mit Ausnahme von (->) . Wenn du die Tilde haben willst, könntest du :~> benutzen, aber du wirst nicht damit durchkommen, etwas zu benutzen, das nicht mit einem Doppelpunkt beginnt. Quelle

    
bheklilr 18.11.2014, 17:21
quelle