reasonml - Módulos de primera clase en OCaml 3.12: ¿Qué tipo de cosas harán más fácil(o posible)?
ocaml online (2)
He oído que los "módulos de primera clase" están llegando en OCaml 3.12. ¿Qué ventajas ofrecerán? ¿Qué niños de las cosas serán más fáciles? ¿Qué problema están tratando de resolver? Un simple ejemplo sería suficiente.
Es solo una de las aplicaciones posibles, pero los módulos de primera clase facilitan la codificación de tipos existenciales, básicamente con un módulo que incluye un tipo existencial y un valor que utiliza este tipo). Por ejemplo, vea el trabajo de Alain Frisch sobre tipos dinámicos (código tomado de trabajo de Alain Frisch sobre los tipos de dyn: 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)
La idea aquí es que "ttype" es una representación concreta de ese tipo, un tipo de datos algebraico con constructores de Float, etc. y tiene aquí un valor, cuyo tipo está oculto, pero que lleva una representación concreta de ese tipo, que puede utilizar, por ejemplo, para obtener una serialización / deserialización más segura.
Tal vez un poco tarde, pero el nuevo módulo de primera clase en papel : poder oculto y promesas tentadoras está exactamente en el tema. Es un conjunto de recetas / perlas alrededor de módulos de primera clase, por Oleg Kiselyov (oleg) y Jeremy Yallop (autor, por ejemplo, del proyecto Deriving ).