2010-06-13 3 views
5

Как я могу использовать некоторую запись OCaml, которую я определил в каком-то другом файле? Скажем, например, что у меня есть файл a.ml, в котором я определяю г запись:доступ к записям OCaml

type r = { i: int; j: int; };

и файл b.ml, в котором я хочу использовать запись г. Что-то вроде этого:

let s = {i = 12; j = 15;} явно не работает - я знаю, что это имеет какое-то отношение к доступу к модулю, в котором определена запись, но я еще не получил синтаксис правильно.

ответ

8

типы и значения, определенные в a.ml живут в модуле А. Таким образом, вы должны либо open A (таким образом, в результате чего все определения из пункта А в область видимости) или ссылаться на i и j, как A.i и A.j соответственно.

+0

Ах, хм, хорошо ... для меня это не работает, потому что я делал что-то вроде: a.ml проведет определение записи, a.mli не будет содержать ничего связанного с этой записью, и я пытался получить доступ к записи с b.ml. Как можно пойти с таким делом - определить запись в интерфейсе? В любом случае, спасибо за ответ. – hyperboreean

+2

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