在 OCaml 中更改相同类型

发布于 2024-10-26 01:25:51 字数 377 浏览 4 评论 0原文

假设我有一个函数 list_fun : int_list ->字符串列表,在该函数中,我使用定义为模块StringSet = Set.Make(String)StringSet。我尝试让函数返回 Set.elements s 并获取 string list 但我得到了一个 StringSet.elt list ,它应该是与 StringSettype t = string 是同一件事。

如何让 OCaml 理解这些类型的定义相同?当我开始使用 OCaml 标准库函数时,我有几个遇到过这个问题的情况。

Suppose I have a function list_fun : int_list -> string list and in that function I use a StringSet that I define as module StringSet = Set.Make(String). I try to have the function return Set.elements s and get a string list but instead I get a StringSet.elt list which is supposed to be the same thing, as the StringSet's type t = string

How do you make OCaml understand that these types are identically defined? I have several cases where I have come across this issue as I have started using the OCaml standard library functions.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人海汹涌 2024-11-02 01:25:51

OCaml 已经知道它们的定义相同 - 除非您做了一些奇怪的事情来隐藏抽象背后的类型,否则它将把 StringSet.elt 列表string 列表 视为相同类型。

OCaml already knows that they are identically defined - unless you're doing something strange to hide the types behind an abstraction, it will treat a StringSet.elt list and string list as the same type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文