我正在尝试将我的.cmo模块加载到toplevel中,我已经尝试了:
$ ocaml mymodule.cmo
我得到了顶级提示,但我无法引用Mymodule。我还尝试了。
#load "mymodule.cmo"
它没有抱怨,但仍然无法引用 Mymodule。
我也尝试过
#use "mymodule.ml"
这个方法似乎可以工作,但它没有将代码加载到"Mymodule"名称空间中。这是一个问题,因为我实际上想要加载一些模块到顶层,并且它们通过它们的模块命名空间相互引用。
你完成操作后
#load "mymodule.cmo"
你可以引用你的模块,但你仍然需要使用模块名称:
Mymodule.x
如果您想使用一个简单的名称(x
),则还需要open
该模块:
open Mymodule
这可能是您问题的源头。
以下是一个会话示例,展示了我所说的内容:
$ cat mymodule.ml
let x = 14
$ ocaml312
Objective Caml version 3.12.0
# load "mymodule.cmo";;
# x;;
Characters 0-1:
x
^
Error: Unbound value x
# Mymodule.x;;
- : int = 14
# open Mymodule;;
# x;;
- : int = 14
#
#load "mymodule.cmo"
时没有出现任何投诉。但是如果顶层无法找到你指定的模块,它将会抱怨。也许在不同的点上有一些问题出现了。祝好! - Jeffrey Scofield