次のように2つのレコードタイプを定義しました。
(* in module A*)
type reg = {name: string; mutable value: Big_int.big_int}
type exp = Reg of reg | Other
(* in module B*)
type abstr = Top | Bot | Elt of int
type register = {name: string; mutable value: abstr}
モジュールBには、私が呼び出すリストがあり、l
それにexp
パターンマッチングを実行しています。だから私はこのようなものを持っています:
List.fold_left (fun l elt ->
let str =
match elt with
| A.Reg r -> r.name
| _ -> failwith "exception" in
l@[{name = str; value = Bot}]) [] l
しかし、次のエラーが発生します。式のタイプはA.regですが、タイプregisterが予期されていました。モジュールAの定義がモジュールBの定義によって隠されているようです。「はい」の場合、なぜこのようになっているのですか?誰かが説明できますか?