【问题标题】:ocaml toplevel module loadingocaml 顶层模块加载
【发布时间】:2011-12-18 18:01:10
【问题描述】:

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

$ ocaml mymodule.cmo

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

我也试过了

#load "mymodule.cmo"

它没有抱怨,但仍然无法引用 Mymodule

我也试过

#use "mymodule.ml"

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

【问题讨论】:

  • 啊,我发现问题的原因是 cmo 文件位于子目录中, -- ocaml lib/mymodule.cmo。我必须使用 -- ocaml -I lib mymodule.cmo 才能引用它。
  • 很高兴您的工作顺利进行。你说当你做#load "mymodule.cmo" 时没有投诉。但是如果找不到您指定的模块,顶层 抱怨。也许有些事情在不同的时候出了问题。问候,

标签: load ocaml


【解决方案1】:

做完之后

#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
# 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多