Модули первого класса в OCaml 3.12: Какие виды вещей они сделают легче (или возможный)?

Я услышал, что "модули первого класса" прибывают в OCaml 3.12. Какие преимущества они предложат? Какие дети вещей будут легче? Какую проблему они пытаются решить? Простой пример был бы достаточен.

17
задан aneccodeal 20 March 2010 в 16:09
поделиться

1 ответ

Это только одно из возможных приложений, но модули первого класса упрощают кодирование экзистенциальных типов, при этом в основном модуль упаковывает экзистенциальный тип и значение, использующее этот тип). Например, см. Работу Алена Фриша по динамическим типам (код взят из работы Алена Фриша по динтипам: http://caml.inria.fr/cgi-bin/viewvc.cgi/ocaml/branches/dyntypes/stdlib/dyntypes .ml? view = markup )

module type DYN = sig
  type t
  val x: t
  val t: t ttype
end

type dyn = (module DYN)

let dyn (type s) t x =
  let module M = struct
    type t = s
    let x = x
    let t = t
  end
  in
  (module M : DYN)

Идея здесь в том, что "ttype" - это конкретное представление этого типа, алгебраический тип данных с конструкторами Int, Float и т. д., и здесь у вас есть значение, тип которого скрыто, но содержит конкретное представление этого типа, которое вы можете использовать, например, для более безопасной сериализации / десериализации.

13
ответ дан 30 November 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: