Я пытаюсь записать что-то вроде этого:
type 'a 'b xxx = {aaa: 'a: bbb: 'b: ccc: int};;
Это не компилирует. Это - просто синтаксическая ошибка, или они не позволяют несколько параметров на типе? Затем, почему?
В ML несколько параметров типа записываются между круглыми скобками и разделяются запятыми, как например:
type ('a,'b) xxx = {aaa: 'a; bbb: 'b; ccc: int; }
На самом деле вы можете написать вот так, но с измененным синтаксисом:
Objective Caml version 3.11.2
# #load "dynlink.cma";;
# #load "camlp4r.cma";;
Camlp4 Parsing version 3.11.2
# type xxx 'a 'b = { aaa : 'a; bbb: 'b; ccc: int};
type xxx 'a 'b = { aaa : 'a; bbb : 'b; ccc : int }
Параметры типа определены в руководстве как:
type-params ::= type-param | ( type-param { , type-param } )
Итак, для списка параметров типа это список, разделенный запятыми, заключенный в круглые скобки.