Подтвердить что ты не робот

Загрузка модуля ocaml toplevel

Я пытаюсь загрузить мои модули в .cmo в верхний слой, я пробовал:

$ ocaml mymodule.cmo

Я получил подсказку верхнего уровня, но я не мог ссылаться на Mymodule

Я также пробовал

#load "mymodule.cmo"

Он не жаловался, но до сих пор не может ссылаться на Mymodule

Я также пробовал

#use "mymodule.ml"

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

4b9b3361

Ответ 1

После выполнения

#load "mymodule.cmo"

вы можете обратиться к своему модулю, но вам все равно нужно использовать имя модуля:

Mymodule.x

Если вы хотите использовать простое имя (x), вам также нужно open модуль:

open Mymodule

Это может быть источником вашей проблемы.

Здесь сеанс, который показывает, о чем я говорю:

$ cat mymodule.ml
let x = 14
$ ocaml312
        Objective Caml version 3.12.0
# load "mymodule.cmo";;
# x;;
Characters 0-1:
  x
  ^
Error: Unbound value x
# Mymodule.x;;
- : int = 14
# open Mymodule;;
# x;;
- : int = 14
#