gpt4 book ai didi

interface - OCaml 类型声明中的冗余 (ml/mli)

转载 作者:行者123 更新时间:2023-12-03 08:47:59 25 4
gpt4 key购买 nike

我正在尝试了解有关 ocaml 模块及其编译的特定内容:

我是否被迫重新声明已在 .mli 中声明的类型?里面具体.ml实现?

举个例子:

(* foo.mli *)
type foobar = Bool of bool | Float of float | Int of int

(* foo.ml *)
type baz = foobar option

根据我对接口(interface)/实现的正常思考方式,这应该没问题,但它说

Error: Unbound type constructor foobar



在尝试编译时
ocamlc -c foo.mli
ocamlc -c foo.ml

当然,如果我声明 foobar,错误就会消失。里面 foo.ml也是如此,但这似乎是一种复杂的方式,因为我必须在每次更改时保持同步。

有没有办法避免这种冗余,或者我每次都被迫重新声明类型?

提前致谢

最佳答案

是的,你被迫重新声明类型 .我所知道的唯一解决方法是

  • 不要使用 .mli 文件;只是暴露所有没有接口(interface)的东西。可怕的想法。
  • 使用识字编程工具或其他预处理器来避免重复 One True Source 中的接口(interface)声明。对于大型项目,我们在我的团队中这样做。

  • 对于小型项目,我们只是重复类型声明。并为此发牢骚。

    关于interface - OCaml 类型声明中的冗余 (ml/mli),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3238509/

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