Ну, val
- это ключевое слово в OCaml для нескольких различных применений.
В обоих случаях вы упомянули, по сути, что val
используется в сигнатуре модуля для указания значений, которые появляются в модуль. Значения - это такие вещи, как функции и выражения. (Примером того, что не является значением, которое может появиться в модуле, является тип.)
О сигнатурах модулей можно прочитать в Разделе 7.10 руководства OCaml.
Первый вариант нетерминальной спецификации - это тот, который начинается с val
.
(На верхнем уровне вы создаете модуль по мере ввода в определения. toplevel использует синтаксис в стиле подписи, чтобы показать, что вы определили. Так или иначе, мне кажется.)