0

我刚刚构建了一个小测试程序来查看我的更大问题,但我不断收到错误。

let test a =
   List.length [a;a;a]

我想用 ocamlbuild 构建它。

ocamlbuild call.byte -no-hygiene

我尝试添加 -pkgs 'core',但效果不佳。

这是错误。

Error: Unbound value List.length

有什么建议么?

4

1 回答 1

0

这不是一个真正的答案,对不起。但是评论区太受限制,无法给出建议的命令行。

List 模块应该作为任何 OCaml 安装的一部分进行安装。它是指定语言的一部分。如果您的编译器确实无法找到 List 模块,则说明有问题。

一种可能性是您的安装混乱并且没有 List 模块。对于这种情况,首先要尝试的是在您的系统上重新安装 OCaml(如果可能)。

这是我如何为我的安装找到 Stdlib 模块(实际文件)的方法。

$ ocamlc -where
/Users/self/.opam/4.10.0/lib/ocaml
$ ls -l $(ocamlc -where)/stdlib.cm*a
-rw-rw-r--  1 self  staff  2812632 Mar  2 09:07 \
     Users/jeffsco/.opam/4.10.0/lib/ocaml/stdlib.cma
-rw-rw-r--  1 self  staff    22621 Mar  2 09:07 \
    /Users/jeffsco/.opam/4.10.0/lib/ocaml/stdlib.cmxa

另一种可能性是,当您说List您不是在谈论标准 List 模块而是在谈论其他模块时。换句话说,也许你的环境已经被List新的东西取代了。一些库喜欢这样做是因为他们觉得自己优于标准库(对此感觉不做评论)。

如果这是正在发生的事情,并且如果您想使用这个其他库,那么您应该阅读该库的文档以了解如何访问标准库函数。几乎总有办法做到这一点。

于 2020-07-11T17:26:57.200 回答