2017-01-19 15 views
0

私は、私はこのようなbin_treeを定義することはできませんWHT任意のアイデアがありません。バイナリ木構文エラー

type 'a bin_tree = Node of { data : 'a ; left : 'a bin_tree; right : 'a bin_tree; } | Leaf 

マーリンは私に語った:タイプ内部エラー、レコードタイプがある_

+0

コンパイラは何を言っていますか? – mookid

答えて

5

バージョン4.03.0以降でのみ使用可能な新しい言語機能であるインラインレコードを使用しています。

それは次の操作を実行することが可能であった4.03.0ので、:

type t = A of { ... } | B 

4.03.0前に、あなたは別にレコード型を定義する必要がありました:

type t = A of r | B and r = { ... } 

あなたはどちらかに持っているがそれに応じてコードを書き直すか、OCamlのインストールをバージョン4.03.0以降に切り替えてください。

+0

ありがとう、これは私の講義スライドに記載されていない:) – Oleg

0

を期待しますまだ定義されていない - とレコード定義はbin_treeので、あなたが共同でそれらを定義する必要があり、しようとする関連している:

type 'a pp = {data : 'a; left: 'a bin_tree; right : 'a bin_tree} and 
     'a bin_tree = Node of 'a pp | Leaf ;;