为什么我不能在 OCaml 中强制记录类型?像这样的基本类型int
工作正常。
下面是一个示例,其中我构建了一个M
包含在 module 中的基本模块A
。M.t
是类型的缩写A
。只要M.t
是int
,我都能做到A.t' :> M.t
。当我将其更改为 时{i : int}
,编译器会说它不是子类型。我猜这有一个非常具体的原因?
module M = struct
type t = {i : int}
let make () = {i = 10}
end
module A : sig
include module type of M
type t' = private t
val make : unit -> t'
end = struct
include M
type t' = t
end
在顶层:
(A.make() :> M.t);;
Error: Type A.t' is not a subtype of M.t