2016-07-17 14 views

Antwort

2

Für freie Typen 'a und 'b, 'a -> 'b ist nicht die Art von jeder gut erzogene OCaml Funktion zu erklären, weil es die Funktion erfordert einen Wert eines beliebigen Typs zu erzeugen.

Also, man kann nicht einen Namen auf einen Typ mit ungebundenen Parameter geben:

# type uabfun = 'a -> 'b 
Error: Unbound type parameter 'a 

Wenn Sie bestimmte Typen verwenden, gibt es kein Problem, ihm einen Namen:

# type iifun = int -> int;; 
type iifun = int -> int 

Wenn Typ Typen 'a und 'b Parameter sind (und nicht frei ist), gibt es auch kein Problem:

# type ('a, 'b) abfun = 'a -> 'b;; 
type ('a, 'b) abfun = 'a -> 'b 
+0

Die Antwort von Jeffrey Scofield ist ausgezeichnet. Ich möchte nur eine Referenz für Variant-Typ in OCaml hinzufügen: https://realworldocaml.org/v1/en/html/variants.html –