Вы должны поставить #use "topfind"
перед любой #require
директивой.Поэтому поместите #require "yojson";;
в конец файла .ocamlinit
(также желательно добавить его после комментария).
Директива #require
предоставляется инструментом ocamlfind
через скрипт topfind
, который загружается на верхний уровень с помощью директивы #use
, которая является стандартной встроенной директивой для загрузки файлов.Файл topfind
инициализирует систему ocamlfind
на верхнем уровне, так что теперь верхний уровень может получить доступ к инфраструктуре ocamlfind
и загрузить библиотеки, установленные в системе.Если вы используете opam для установки пакетов, то не забудьте сделать eval $(opam config env)
(или более короткую версию, доступную в opam 2.x eval $(opam env)
) в своем терминале, прежде чем запускать уровень выше.Например,
eval $(opam config env)
ocaml
и вот правильное содержимое файла .ocamlinit
:
(* ## added by OPAM user-setup for ocamltop / base ## 3ec62baf6f9c219ae06d9814069da862 ## you can edit, but keep this line *)
(* Added by OPAM. *)
let () = try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
with Not_found -> ()
;;
#use "topfind";;
#camlp4o
#thread;;
Topfind.don't_load ["compiler-libs.toplevel"];;
#require "core.top";;
#require "core.syntax";;
(* ## end of OPAM user-setup addition for ocamltop / base ## keep this line *)
#require "yojson";;