0

私は持っています :

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)),

しかし、失敗しました!なぜなのかご存知ですか?

4

1 に答える 1

3

次のようにして、intbox型の要素を作成します。

let elt = Item(3,Empty)

そして今、あなたはこれをボックスに入れることによって、タイプintボックスボックスの要素を作成することができます:

let elt2 = Item(elt,empty)

(ボックスは実際にはリストタイプのみです)

リストを使用すると、次のようになります。

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

あなた自身の例に関しては、2つの異なるもの(ボックスと整数)を含むボックスを作成しようとしているため、2番目の例は失敗します。ただし、ボックスに含めることができるのは1つのタイプのみです。

于 2013-03-05T19:18:27.503 に答える