ocaml中元组元组的元组

时间:2013-03-05 19:15:14

标签: ocaml tuples concat

我有:

type 'a box =
  | Item of ('a * 'a box)
  | Empty

我需要创建函数concat

val concat : 'a box box -> 'a box

连接一盒盒子。参数的元素都连接在一起(以相同的顺序)以给出结果。

我不理解如何创建像'a box box这样的变量。

我试着这样做:

let elt  = Item(1, Item(2,Empty)) 
let elt2 = Item(elt, Item(20, Empty)),

但它失败了!你知道为什么吗?

1 个答案:

答案 0 :(得分:3)

通过执行以下操作创建int类型的元素:

let elt = Item(3,Empty)

现在你可以通过将这个东西放在一个框中来创建一个int box box类型的元素:

let elt2 = Item(elt,empty)

(框实际上只是列表类型)

列表将是:

let elt = [3]
let elt2 = [elt] (* which is [ [3] ], the list containing one list, which contains 3*)

关于你自己的例子,第二个失败是因为你试图创建一个包含两个不同内容的框:一个框和一个整数。但是一个盒子只能包含一种类型的东西。