Ocaml не распознает List.init в Утопе - PullRequest
0 голосов
/ 05 марта 2019

Каждый раз, когда я использую List.init Я получаю ошибку Error: Unbound value List.init
Я думаю, это потому, что у меня Ocaml 4.03.0, а List.init не был представлен до 4.06.0.Это заставило бы меня поверить, что мне нужно обновить мою версию ocaml, но я не смог понять, как это сделать.Я перепробовал много опама, но пока ничего не получалось.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

List.init доступно из модуля janestreet Core, оно не доступно из стандартной библиотеки.Вы должны установить core;он не зависит от компилятора ocaml.

 opam install core

In utop (добро пожаловать в версию 2.3.0 utop (с использованием версии OCaml 4.03.0 )):

 utop # #require "core";;
 utop #  Core.List.init;;
 - : int -> f:(int -> 'a) -> 'a list = <fun>
0 голосов
/ 05 марта 2019

С помощью opam вы не обновляете компилятор, а устанавливаете или переключаетесь на другой компилятор.Таким образом, вы можете манипулировать несколькими различными установками с отдельными наборами совместимых пакетов.

Вы можете распечатать список доступных версий компилятора, вызвав

opam switch list-available

или сократить его только до официальных выпусков:

opam switch list-available base-compiler

Установите конкретную версию, скажем 4.06.0, вызвав

opam switch create 4.06.0
eval $(opam env)
...