gpt4 book ai didi

functional-programming - 在 OCaml 中,何时使用接口(interface) (mli) 以及何时使用模块?

转载 作者:行者123 更新时间:2023-12-04 05:11:40 25 4
gpt4 key购买 nike

OCaml 提供 mli用于接口(interface)和模块系统。

我的问题很简单,如何从中选择?

最佳答案

好吧,一个,modules are much more powerful .例如,OCaml 有 Functor(类似于模块级函数)。在解释器中输入:

module String_set = Set.Make (String)

它创建一个对字符串集(例如并集和交集)进行操作的模块。

如果您只使用模块的命名空间功能,则创建显式模块可以方便地使用更深的命名空间。也就是说,模块中的模块,例如:Module1.Module2,可以通过定义名为 Module2 的模块的文件 module1.ml 来实现。

当然,每个文件都定义了一个模块 - 文件 m.ml 定义了模块 M - 我发现它们在语法上很方便(因为你没有额外的缩进......)

此外,.mli 有不同的用途:接口(interface)文件用于记录顶级定义的类型,这包括模块本身。如果您在文件 m.ml 中定义模块 X,您也可以将 X 的签名放入 m.mli 中。但是 .mli 文件是可选的,因此即使您喜欢将模块定义为文件,也不需要创建接口(interface)文件。

PS:OCaml 中的模块非常强大,一个常见的话题是 "should I use modules or objects?" .另请查看 first class modules增加魔法。

关于functional-programming - 在 OCaml 中,何时使用接口(interface) (mli) 以及何时使用模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14851532/

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