【发布时间】:2019-03-04 22:03:47
【问题描述】:
每当我使用 List.init 时,我都会收到错误 Error: Unbound value List.init
我认为这是因为我有 Ocaml 4.03.0 和 List.init 直到 4.06.0 才引入。这会让我相信我需要更新我的 ocaml 版本,但我无法弄清楚如何做到这一点。我尝试了很多 opam 选项,但到目前为止都没有任何效果。
【问题讨论】:
每当我使用 List.init 时,我都会收到错误 Error: Unbound value List.init
我认为这是因为我有 Ocaml 4.03.0 和 List.init 直到 4.06.0 才引入。这会让我相信我需要更新我的 ocaml 版本,但我无法弄清楚如何做到这一点。我尝试了很多 opam 选项,但到目前为止都没有任何效果。
【问题讨论】:
使用 opam,您无需升级编译器,而是安装或切换到另一个编译器安装。这样您就可以使用不同的兼容包集来处理多个不同的安装。
您可以通过调用来打印可用编译器版本的列表
opam switch list-available
或将其简化为仅官方版本:
opam switch list-available base-compiler
通过调用安装特定版本,例如4.06.0
opam switch create 4.06.0
eval $(opam env)
【讨论】:
opam switch create 4.06.0 opam: Invalid switch subcommand "create" Usage: opam switch [OPTION]... [COMMAND] [ARG]...
opam switch create 可用于 opam 2.0
opam switch 4.06.0 和 eval $(opam config env),但无论如何你真的应该升级 opam。
List.init 可从 janestreet Core 模块获得,但不能从标准库获得。您必须安装 core ;它独立于 ocaml 编译器。
opam install core
在utop(欢迎使用utop 2.3.0 版本(使用OCaml 版本4.03.0)):
utop # #require "core";;
utop # Core.List.init;;
- : int -> f:(int -> 'a) -> 'a list = <fun>
【讨论】: