Probleme beim Verständnis von Haskells Typsystem

8

Ich versuche derzeit 20 Intermediate Haskell Exercises . Ich konnte mit den ersten 3 Übungen fertig werden (aber das liegt daran, dass furry == fmap und Learn You a Haskell hat diese Implementierungen bereits). Ich bin derzeit auf der Instanz fest, die sagt:

%Vor%

Ich verstehe nicht wirklich, was ich tun soll. In Learn You Haskell haben sie eine newtype Variable namens Pair , die ein Tupel aufnimmt. Sie können dann Mustererkennung als solche tun:

%Vor%

Ich dachte, Sie könnten vielleicht etwas Ähnliches in meiner Situation tun:

%Vor%

Aber das geht nicht:

%Vor%

Ich dachte, vielleicht würde ich import Data.Either , weil es vielleicht ein paar importierte Dinge gibt, die er hat, die ich nicht habe. Aber das war egal.

Ich habe auch versucht, genau das zum Laufen zu bringen:

%Vor%

Aber das funktioniert auch nicht:

%Vor%

Ich konnte das auch nicht zum Laufen bringen:

%Vor%

Was den Fehler ergab:

%Vor%

Ich konnte nur bekommen:

%Vor%

um zu arbeiten. Aber ich habe keine Ahnung, was ich mit t machen soll.

Ich will nicht unbedingt eine Antwort. Ich brauche nur einen Hinweis, was zu tun ist, weil ich lese und ich kann die Beispiele verstehen, aber ich kann mich nicht wirklich dazu durchringen, dieses Zeug selbst zu programmieren.

Danke Dan, das ist, was ich für meine Lösung gefunden habe:

%Vor%     
Dair 21.08.2012, 01:52
quelle

1 Antwort

13

Das Problem, das Sie haben, ist, dass der Datentyp "Entweder" keinen Datenkonstruktor mit dem Namen "Entweder" hat, im Grunde sieht der Typ "Entweder" wie folgt aus

%Vor%

Also kann ein Wert den Typ Either a b haben, aber es gibt keinen Wert wie Either "one" 1 oder etwas ähnliches, sondern stattdessen Left "one" oder Right 1 .

Im Fall von EitherLeft sehen seine Werte ähnlich aus wie EitherLeft (Left a) oder EitherLeft (Right b) und müssen als Muster mit einem Muster verglichen werden.

    
Dan Feltey 21.08.2012, 02:31
quelle