小编foc*_*cus的帖子

如何访问另一个.ml文件中的一个.ml文件中定义的类型

在a.ml中,定义记录类型t,并且也在a.mli中透明地定义,即在d接口中,以便类型定义可用于所有其他文件.

a.ml还有一个函数func,它返回一个t列表.

现在在另一个文件中,b.ml即可调用func,现在很明显ocaml编译器wud nt能够推断存储在d列表中的d类型的对象,对于编译器来说它只是一个列表.所以在b.ml中,我喜欢dis,

let tlist = A.func in
let vart = List.hd tlist in
printf "%s\n" vart.name     (*name is a field in record t*)
Run Code Online (Sandbox Code Playgroud)

现在我在这里得到一个编译器错误,说"未绑定记录字段标签名称",这是有道理的,因为编译器无法推断d类型的镖.

我的第一个问题:如何在这里明确提供d型镖?我试着做"让vart:At ="但是得到了同样的错误.

我还尝试创建另一个函数来获取d列表的第一个元素并将返回类型提到At,但后来我得到了"Unbound value At".我这样做了:

let firstt = function
     [] -> 0
   | x :: _ -> A.t x ;;
Run Code Online (Sandbox Code Playgroud)

问题是编译器无法识别b.ml中的At(a type)但是能够识别函数A.func.如果我从b.ml中删除At,我不会遇到任何编译器错误.

ocaml

5
推荐指数
1
解决办法
2690
查看次数

标签 统计

ocaml ×1