Ich habe diesen einfachen Code in OCaml:
%Vor% Beim Testen meiner extract
-Funktion scheint es zu funktionieren:
Ich vereinfache es, also braucht es nur einen Typ:
%Vor%Aber ich bekomme den Fehler:
%Vor% Das lustige ist, ich kann Werte von a'
...
... Ich kann sie einfach nicht dekonstruieren. Warum?
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:
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.)
Tags und Links algebraic-data-types ocaml