type t1 = A of int * string
和type t2 = A of (int * string)
,它们是不同还是相同?
在这个functional programming tutorial幻灯片6中,它说
在OCaml中,变体采用多个参数而不是采用元组 作为参数:int * string的一个不同于(int * string)的A。 但除非你被它咬了,否则它并不重要。
但除了一对括号外,我没有看到任何区别。
答案 0 :(得分:0)
尝试以下方法:
type t1 = A of int*int
type t2 = B of (int*int)
let x = (1,2) in A x (* does not work *)
let x = (1,2) in B x (* works *)
也就是说,B
是一个期望1个参数的构造函数(即包含两个整数的元组),而A
是一个接受2个参数的构造函数(作为括号,逗号分隔的东西提供)。