Nach der Vereinfachung in OCaml kann der Produkttyp nicht dekonstruiert werden

8

Ich habe diesen einfachen Code in OCaml:

%Vor%

Beim Testen meiner extract -Funktion scheint es zu funktionieren:

%Vor%

Ich vereinfache es, also braucht es nur einen Typ:

%Vor%

Aber ich bekomme den Fehler:

%Vor%

Das lustige ist, ich kann Werte von a' ...

konstruieren %Vor%

... Ich kann sie einfach nicht dekonstruieren. Warum?

    
Dog 01.04.2013, 21:58
quelle

1 Antwort

13

Sie müssen

verwenden %Vor%

Dies ist eine der kniffligsten Stellen in der OCaml-Typspezifikation.

Es sind zwei verschiedene Typen beteiligt, die sich geringfügig unterscheiden:

%Vor%

Im Typ one_field gibt es ein einzelnes Feld, das ein Paar Ints ist. Im Typ two_fields gibt es zwei Felder, von denen jedes ein int ist. Das Schwierige ist, dass der Konstruktor identisch aussieht:

%Vor%

Diese beiden Typen sind verschieden und werden im Speicher unterschiedlich dargestellt. (Die Zwei-Feld-Variante benötigt tatsächlich weniger Platz und ist etwas schneller zugänglich.)

    
Jeffrey Scofield 01.04.2013, 22:14
quelle

Tags und Links