【问题标题】:Ocaml isn't recognizing List.init in UtopOcaml 无法识别 Utop 中的 List.init
【发布时间】:2019-03-04 22:03:47
【问题描述】:

每当我使用 List.init 时,我都会收到错误 Error: Unbound value List.init
我认为这是因为我有 Ocaml 4.03.0 和 List.init 直到 4.06.0 才引入。这会让我相信我需要更新我的 ocaml 版本,但我无法弄清楚如何做到这一点。我尝试了很多 opam 选项,但到目前为止都没有任何效果。

【问题讨论】:

    标签: ocaml opam


    【解决方案1】:

    使用 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 - opam switch create 可用于 opam 2.0
    • 在 2.0 之前只有 opam switch 4.06.0eval $(opam config env),但无论如何你真的应该升级 opam。
    【解决方案2】:

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-06
      • 1970-01-01
      • 2014-01-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      相关资源
      最近更新 更多