Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ocamlbuild错误未绑定值_Build_Ocaml_Ocamlbuild - Fatal编程技术网

ocamlbuild错误未绑定值

ocamlbuild错误未绑定值,build,ocaml,ocamlbuild,Build,Ocaml,Ocamlbuild,让我们简短地说一下。我学习OCaml是为了我目前正在学习的一门课程,我正试图让intellisense在Linux上使用VS代码进行设置。为此,我必须首先构建我的文件。问题是,当我试图构建文件“spellc.ml”时,我得到一个错误,即存在一个未绑定的值 我的目录结构如下: _build/ src/ ... src/ spellc.ml utiles.ml ... .merlin src/spellc.ml: module Spellc = struct ope

让我们简短地说一下。我学习OCaml是为了我目前正在学习的一门课程,我正试图让intellisense在Linux上使用VS代码进行设置。为此,我必须首先构建我的文件。问题是,当我试图构建文件“spellc.ml”时,我得到一个错误,即存在一个未绑定的值

我的目录结构如下:

_build/
  src/
    ...
src/
  spellc.ml
  utiles.ml
  ...
.merlin
src/spellc.ml:

module Spellc = struct
    open Utiles
    [...]

    let someFunc x =
        [...]
        let foo = List.map case lst in

    [...]
end
src/utiles.ml:

module Utiles = struct
    [...]

    let case x =
        [...]

    [...]
end
梅林先生:

S src
B _build/src
据我所知,在我当前的上下文中,使用像“open Utiles”这样的open语句应该包括模块“Utiles”中包含的所有表达式和函数,这样它们就可以直接使用,所以如果我使用case,就好像我在使用Utiles.case一样。但当我在终端中使用ocamlbuild编译时,这似乎不起作用:

ocamlbuild -tag bin_annot src/spellc.byte
我得到这个错误:

Error: Unbound value case

当我使用以其模块(Utiles.case)为前缀的函数时,不会发生这种情况。有没有人能告诉我,有没有一种简单的方法可以让编译在open语句中工作?

多亏了dkim,我终于找到了问题的答案。我不明白的是,在编译OCaml文件时,名为utiles.ml的文件已经定义了名为utiles的模块,因此无需在.ml文件中添加额外的声明模块utiles。

多亏了dkim,我终于找到了问题的答案。我不明白的是,在编译OCaml文件时,名为utiles.ml的文件已经定义了名为utiles的模块,因此无需在.ml文件中添加额外的声明模块utiles。

let case x=…
放在
utiles.ml
的顶层,而不是
模块utiles=struct>中。。。结束
utiles.ml
文件本身定义了一个名为
utiles
的模块:非常感谢您的回答!事实上,我是在读你的评论之前发现这一点的。我们的文件主要是由我们的老师这样放置的,这样我们就可以将它们复制粘贴到ocaml解释器中并使用它们的模块。我不知道编译器将.ml文件识别为模块本身。将
让case x=…
放在
utiles.ml
的顶层,而不是放在
模块utiles=struct中。。。结束
utiles.ml
文件本身定义了一个名为
utiles
的模块:非常感谢您的回答!事实上,我是在读你的评论之前发现这一点的。我们的文件主要是由我们的老师这样放置的,这样我们就可以将它们复制粘贴到ocaml解释器中并使用它们的模块。我不知道编译器会将.ml文件本身识别为模块。