Почему это работает нормально?
module Account = struct
type account_type = Current of float | Savings of float
end
let sarah = Account.Current 100.0;;
Хотя последняя строка ниже приводит к ошибке : синтаксическая ошибка
?
module Account = struct
type 'a account_type = [> `Current of float | `Savings of float ] as 'a
end
let pete = Account.`Current 100.0;;
То есть, почему я не могу использовать тип открытого объединения вне модуль без открытия модуля? Я должен сказать, что обнаружил, что изменение последней строки на:
open Account;;
let pete = `Current 100.0;;
работает нормально, но, очевидно, это обременительно, если я часто использую account_type
или мне нужно открыть Account
в начале любого раздела кода, где используется account_type
, что означает, что я пожертвую абстракцией, которую получу, используя подпись для Account
. Я просмотрел несколько Учебники по OCaml, а также документация INRIA, и я не могу найти упоминания о том, как вы это делаете.
Можно ли избежать необходимости открывать модуль каждый раз, когда я хочу использовать account_type
?
Заранее спасибо,
Зак