有没有办法在OCaml中向已有的模块添加功能?
具体来说,我有一些跟踪源文件位置的模块“Loc”。我还有一个名为“Ast”的模块,它表示一些代码的抽象语法树。我想在“ast.ml”中定义方法“Loc.of_ast”,从而扩展“Loc”。有没有办法做到这一点?
注意:这可能是一个XY问题。我倾向于相信这样的模块扩展是可能的,因为在Batteries中,有类似“String.of_int”和“Int.of_string”等方法,这意味着这些模块是互相递归的。当然他们不会全部在同一个文件中完全定义...
具体来说,我有一些跟踪源文件位置的模块“Loc”。我还有一个名为“Ast”的模块,它表示一些代码的抽象语法树。我想在“ast.ml”中定义方法“Loc.of_ast”,从而扩展“Loc”。有没有办法做到这一点?
注意:这可能是一个XY问题。我倾向于相信这样的模块扩展是可能的,因为在Batteries中,有类似“String.of_int”和“Int.of_string”等方法,这意味着这些模块是互相递归的。当然他们不会全部在同一个文件中完全定义...
ast.ml
中定义Loc.of_ast
? - glennslString.of_int
和Int.of_string
可以在不相互递归的情况下定义在单独的模块中,只要这些类型没有在这些模块中定义。它们并没有被定义在那些模块中。string
和int
是原语,我相信它们是由编译器定义的。 - glennsl