Haskell newtype Syntax

8

Bitte helfen Sie mir, die folgende Definition zu verstehen:

%Vor%

Warum ist runWriter als

deklariert? %Vor%

, wenn der tatsächliche Typ lautet:

%Vor%

Nachdem ich mit ghci versucht habe, habe ich festgestellt, dass dies ein implizites Argument sein muss, da Typ "a" bestimmt werden muss, aber was genau passiert hier?

    
Rumca 11.07.2013, 17:52
quelle

2 Antworten

8

Weil runWriter ein Datensatzfeld-Accessor auf Writer ist. Es ist eigentlich fast gleichbedeutend mit

%Vor%

Haskell hat nur Datensätze zu geben

  1. Bessere Syntax, da diese Art von Accessor-Code recht häufig ist
  2. Die Möglichkeit für funktionale Updates
  3. Einige andere Erweiterungen

zB

%Vor%

Wenn es hilft, denken Sie an es als etwas wie ein "funktioneller Getter" im gröbsten Sinne. Das scheint mit einem Feld nicht besonders wichtig zu sein, Sie können immer Muster zuordnen, aber wenn Sie 5 Felder haben, sind Datensätze + funktionale Updates sehr hilfreich. Siehe LYAH für eine ausführlichere Erklärung.

    
jozefg 11.07.2013, 18:02
quelle
0

Eine andere Art, es zu betrachten: Sie können sich vorstellen, 2-Tupel so zu definieren (wenn die spezielle (,) -Syntax nicht schon eine spezielle eingebaute war)

%Vor%

und dann fst und snd würden sich wie normal verhalten:

%Vor%

( newtype wie in Ihrem Beispiel funktioniert für Typen mit nur einem Wertfeld. Für Typen mit mehreren Feldern wird data benötigt.)

    
misterbee 28.12.2013 01:19
quelle

Tags und Links