我正在OCaml中处理递归模块,但在访问类型字段时遇到一些麻烦。
如果我尝试做:
module A = struct type t = { name : string; } end
module A2 =
struct
include A
let getName (x:t) = x.name
end;;
Run Code Online (Sandbox Code Playgroud)
一切正常。但是,我需要一个更复杂的类型,这迫使我在递归模块中定义我的类型。
module rec B:Set.OrderedType =
struct
type t = {name: string; set : S.t}
let compare _ _ = 0
end
and S:Set.S = Set.Make (B);;
Run Code Online (Sandbox Code Playgroud)
一切仍然完美。但是,以下模块不正确:
module B2 =
struct
include B
let get_name (x:t) = x.name
end;;
Run Code Online (Sandbox Code Playgroud)
返回的错误是“未绑定记录字段名称”。问题是什么 ?