gpt4 book ai didi

module - 如何从接口(interface)获取模块类型?

转载 作者:行者123 更新时间:2023-12-02 04:08:32 25 4
gpt4 key购买 nike

我想要自己实现现有模块,但要保持与现有模块的兼容接口(interface)。我没有现有模块的模块类型,只有一个接口(interface)。所以我无法在界面中使用 include Original_module 。有没有办法从接口(interface)获取模块类型?

一个例子是 stdlib 中的 List 模块。我创建了一个 My_list 模块,其签名与 List 完全相同。我可以将 list.mli 复制到 my_list.mli,但看起来不太好。

最佳答案

在某些情况下,您应该使用

include module type of struct include M end   (* I call it OCaml keyword mantra *)

而不是

include module type of M

因为后者放弃了数据类型与其在 M 中定义的原始数据类型的相等性.

可以通过 ocamlc -i xxx.mli 观察到差异:

include module type of struct include Complex end

具有以下类型定义:

type t = Complex.t = { re : float; im : float; }

这意味着t是原始 Complex.t 的别名。

另一方面,

include module type of Complex

type t = { re : float; im : float; }

Complex.t 没有关系,它变成与 Complex.t 不同的类型:如果没有include,则无法使用原始模块和扩展版本混合代码。黑客。这通常不是您想要的。

关于module - 如何从接口(interface)获取模块类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37300584/

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