2010-07-29 12 views
6

La recente OCaml 3.12 introduce un feature di moduli imballati prima classe:Quali sono gli usi positivi dei moduli in pacchetto OCaml?

prima classe pacchetti moduli.

  • nuovo tipo di espressione tipo, per i moduli contenuti: (module PT)
  • nuovo tipo di espressione, per il confezionamento di un modulo come valore di prima classe: (module MODEXPR : PT).
  • Nuovo tipo di espressione del modulo, per decomprimere un valore di prima classe come modulo: (val EXPR : PT).
  • PT è un tipo di pacchetto del modulo S o S with type t1 = ... and ... and type tn = ... (S si riferisce a un tipo di modulo).

Dove posso trovare esempi motivanti o documenti che utilizzano questa funzione?

risposta

5

Credo che uno degli esempi canonici di motivazione sia la scelta tra diverse strutture che implementano la stessa firma sulla base di informazioni disponibili solo in fase di esecuzione.

Ad esempio, scegliendo tra una tabella hashtable e un albero binario bilanciato come implementazione di una mappa.

C'è un po 'di informazioni su: https://forge.ocamlcore.org/docman/view.php/77/112/leroy-cug2010.pdf

Credo che il disegno OCaml è stato influenzato da una simile estensione per SML da Claudio Russo - vedi per esempio "Strutture di prima classe per ML standard" http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8754&rep=rep1&type=pdf

+2

Per quanto mi ricordo, Moscow ML, un'implementazione SML che utilizzava caml-light come back-end, è stata la prima a implementare moduli di prima classe. La sezione appropriata della documentazione di Moscow ML si riferisce ai file mosml/examples/modules/{sieve.sml, array.sml, choice.sml, matrix.sml} dalla distribuzione per gli esempi. –

+0

@Pascal Bel riferimento per gli esempi. Questa è l'estensione di Claudio che ho menzionato. – RD1

Problemi correlati