Могу ли я использовать 2 сиг в одном модуле? - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу создать типы данных базы данных и таблицы в OCaml.Могу ли я использовать 2 sig ключевых слов в 1 модуле?Не могли бы вы привести пример того, как написать подпись и как ее реализовать?

1 Ответ

0 голосов
/ 26 апреля 2018

Если вы имеете в виду наличие модуля, который удовлетворяет 2 типам модулей, да, вы можете.

module type ADDITIVE = sig
    type t
    val add : t -> t -> t
end

module type MULTIPLICATIVE = sig
    type t
    val multiply : t -> t -> t
end

module Number : sig
    include ADDITIVE
    include MULTIPLICATIVE with type t := t
end = struct
    type t = int
    let add x y = x + y
    let multiply x y = x + y
end

Мы говорим, что сигнатура модуля Number - это включение типа модуля ADDITIVE (который открывает t в этом контексте) и MULTIPLICATIVE с тем же типом в t из t из ADDITIVE, поэтому мы можем реализовать модуль в соответствии с сигнатурой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...