我正在尝试将 .cmo 中的模块加载到顶层,我曾尝试过:

$ ocaml mymodule.cmo

我得到了顶级提示,但我无法引用 Mymodule

我也试过
#load "mymodule.cmo"

它没有提示但仍然无法引用 Mymodule

我也试过
#use "mymodule.ml"

这似乎有效,但它没有将代码加载到 Mymodule 命名空间中,这是一个问题,因为我实际上想将几个模块加载到顶层,并且它们通过模块命名空间相互引用。

最佳答案

做完之后

#load "mymodule.cmo"

你可以引用你的模块,但你仍然需要使用模块名称:
Mymodule.x

如果你想使用一个简单的名字( x ),你还需要 open 模块:
open Mymodule

这可能是您问题的根源。

这是一个 session ,显示了我在说什么:
$ 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 - ocaml 顶层模块加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8553623/

10-13 06:05