小编Ste*_*deo的帖子

如何访问OCaml递归模块中定义的类型的字段?

我正在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)

返回的错误是“未绑定记录字段名称”。问题是什么 ?

recursion ocaml types field module

2
推荐指数
1
解决办法
359
查看次数

标签 统计

field ×1

module ×1

ocaml ×1

recursion ×1

types ×1