OCaml中,用不同的arities元组有不同的类型和值构造函数:
# let a = (1, 2, 3);;
val a : int * int * int = (1, 2, 3)
# let b = (1, (2, 3));;
val b : int * (int * int) = (1, (2, 3))
注意,第二示例(b)是比第一更灵活的(a)因为B的“尾巴” - (2,3) - 本身是有效的值:
# let (_, c) = b;;
val c : int * int = (2, 3)
# let d = snd b;;
val d : int * int = (2, 3)
什么是不解析原因不同arities“(1,2,3)”为“(1,(2,3))”,而是引入了无限(或者甚至更糟的是,有限的)的新的类型和值构造量?