2010-07-29 12 views
6

La reciente OCaml 3.12 introduce un feature de módulos de paquetes de primera clase:¿Cuáles son los buenos usos de los módulos empaquetados OCaml?

módulos de paquetes de primera clase.

  • nuevo tipo de expresión de tipo, para los módulos empaquetados: (module PT)
  • nuevo tipo de expresión, para empacar un módulo como un valor de primera clase: (module MODEXPR : PT).
  • Nuevo tipo de expresión de módulo, para descomprimir un valor de primera clase como un módulo: (val EXPR : PT).
  • PT es un tipo de paquete del formulario S o S with type t1 = ... and ... and type tn = ... (S se refiere a un tipo de módulo).

¿Dónde puedo encontrar ejemplos motivadores o documentos con esta característica?

Respuesta

5

Creo que uno de los ejemplos canónicos de motivación es elegir entre diferentes estructuras que implementan la misma firma en función de la información solo disponible en el tiempo de ejecución.

P. ej., Eligiendo entre una tabla hash y un árbol binario equilibrado como una implementación de un Mapa.

Hay un poco de información en: https://forge.ocamlcore.org/docman/view.php/77/112/leroy-cug2010.pdf

Creo que el diseño OCaml fue influenciado por una extensión similar para SML por Claudio Russo - véase, por ejemplo "Estructuras de primera clase para ML estándar" http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8754&rep=rep1&type=pdf

+2

Por lo que recuerdo, Moscow ML, una implementación de SML que usa caml-light como back-end, fue el primero en implementar módulos de primera clase. La sección correspondiente de la documentación de Moscow ML se refiere a los archivos mosml/examples/modules/{sieve.sml, array.sml, choice.sml, matrix.sml} de la distribución para ver ejemplos. –

+0

@Pascal Buena referencia para los ejemplos. Esa es la extensión de Claudio que mencioné. – RD1

Cuestiones relacionadas