ocaml顶层模块加载

rom*_*run 13 ocaml load

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

$ ocaml mymodule.cmo
Run Code Online (Sandbox Code Playgroud)

我得到了顶级提示,但我无法参考Mymodule

我也试过了

#load "mymodule.cmo"
Run Code Online (Sandbox Code Playgroud)

它没有抱怨,但仍然不能参考Mymodule

我也试过了

#use "mymodule.ml"
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*eld 18

你做完之后

#load "mymodule.cmo"
Run Code Online (Sandbox Code Playgroud)

您可以参考您的模块,但仍需要使用模块名称:

Mymodule.x
Run Code Online (Sandbox Code Playgroud)

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

open Mymodule
Run Code Online (Sandbox Code Playgroud)

这可能是您问题的根源.

这是一个会话,显示我在说什么:

$ 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
# 
Run Code Online (Sandbox Code Playgroud)