загрузка модуля верхнего уровня ocaml - PullRequest
13 голосов
/ 18 декабря 2011

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

$ ocaml mymodule.cmo

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

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

#load "mymodule.cmo"

Он не жаловался, но все еще не может ссылаться на Mymodule

Я тоже пытался

#use "mymodule.ml"

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

1 Ответ

18 голосов
/ 18 декабря 2011

После того, как вы сделаете

#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
# 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...