什么';这两种类型定义在OCaml中的区别是什么

什么';这两种类型定义在OCaml中的区别是什么,ocaml,Ocaml,类型t1=A of int*string和类型t2=A of(int*string),它们是不同的还是相同的 在这张幻灯片6中,它说 在OCaml中,变体采用多个参数,而不是元组 作为参数:of int*string与of(int*string)不同。 但这并不重要,除非你被它咬了 但除了一对括号外,我看不到任何区别。尝试以下方法: type t1 = A of int*int type t2 = B of (int*int) let x = (1,2) in A x (* does not w

类型t1=A of int*string
类型t2=A of(int*string)
,它们是不同的还是相同的

在这张幻灯片6中,它说

在OCaml中,变体采用多个参数,而不是元组 作为参数:of int*string与of(int*string)不同。 但这并不重要,除非你被它咬了

但除了一对括号外,我看不到任何区别。

尝试以下方法:

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个参数的构造函数(以括号和逗号分隔的形式提供)。

这是两种不同的类型。这已经被问了很多次了。以下是一些例子: