2013-11-07 4 views
8

Я новичок в OCaml. Я хочу определить тип, который используется только в одной функции. Я не хочу делать это доступным вне этой функции. Можем ли мы определить его внутри этой функции? Или есть другой способ добиться того же?Можем ли мы определить типы внутри функции в OCaml?

ответ

12

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

let f x = 
    let module Local = struct 
    type t = A | B 
    end in 
    ... 

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

+3

И вы можете открыть локальный модуль. – lukstafi

Смежные вопросы