2016-03-29 7 views
0

ocamlを使用してBean用の単純なコンパイラを構築しています。豆の各タイプの定義はお互いを構成する型を定義する方法

  1. キーワード 'のtypedef'、
  2. タイプ仕様、

  3. 識別子から成ります。

のいずれか1つに型指定:

1.キーワードのブール」または「INT」に囲まれたフィールド定義の

2.Aカンマ区切りリスト{と}

私はこのような2つのタイプを定義したい3.an識別子

type field_def = (ident * typespec) 

type typespec = 
    | Bool 
    | Int 
    | Tident of ident 
    | Tfield_def of field_def list 

type typedef = (ident * typespec) 

私はfield_defの定義でtypeを使用しますが、次の定義で定義します。したがって、常にunbound errorという型が表示されます。どうすれば解決できますか?

答えて

2

あなたがお互いに依存して型を作成したい場合は、あなたがandを使用する必要があります。

type a = A | OfB of b 
and b = B | OfA of a 

それはあなたが相互再帰関数を定義する場合と同じです:

let rec is_even n = n = 0 || is_odd (n - 1) 
and is_odd n = n <> 0 && is_even (n - 1) 
関連する問題