gpt4 book ai didi

ocaml - 模块和接口(interface)的设计

转载 作者:行者123 更新时间:2023-12-04 15:01:12 26 4
gpt4 key购买 nike

我想定义一个接口(interface)PROPERTY ,以及至少 2 个模块 TypeFormula匹配它:

module type PROPERTY =
sig
type t
val top : t
val bot : t
val to_string: t -> string
val union: t -> t -> t
val intersection: t -> t -> t
end

module Type = (struct
type t =
| Tbot
| Tint
| Tbool
| Ttop
...
end: PROPERTY)

module Formula = (struct
type t =
| Fbot
| Ftop
| Fplus of int * Type.t
...
let union =
... Type.union ...
...
end: PROPERTY)

有两个要求:

1) 我想要 Type 的构造函数可以在外部调用(必要时调用所有程序)

2) Formula的一些值的一部分包含 Types 的值,例如 Fplus (5, Type.Tint)Formula 类型;还有 Formula的一些功能需要调用 Type的一些函数,例如 Formula.union需要调用 Type.union
谁能告诉我如何修改上述声明以满足我的要求?如有必要,可以添加额外的模块...

最佳答案

不要申请 : PROPERTY密封铸件到模块声明。这隐藏了返回模块的额外信息。你应该使用:

 module Type = struct .. end
module Formula = struct .. end

如果您仍想检查 TypeFormula满足 PROPERTY界面,您可以单独执行此操作:
 let () =
ignore (module Type : PROPERTY);
ignore (module Formula : PROPERTY);
()

关于ocaml - 模块和接口(interface)的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com