2010-07-29 20 views
6

Niedawne OCaml 3.12 wprowadza feature modułów w opakowaniach wysokiej klasy:Jakie są dobre zastosowania modułów pakowanych OCaml?

moduły pakietów na najwyższym poziomie.

  • nowy rodzaj typu słowa, pakowanych modułów: (module PT)
  • nowego rodzaju ekspresji, aby opakowanie modułu jako wartości pierwszej klasy: (module MODEXPR : PT).
  • Nowy rodzaj wyrażeń modułu, do rozpakowania wartości pierwszej klasy jako moduł: (val EXPR : PT).
  • PT to rodzaj paczki w postaci S lub S with type t1 = ... and ... and type tn = ... (odnosi się do typu modułu).

Gdzie mogę znaleźć motywujące przykłady lub dokumenty wykorzystujące tę funkcję?

Odpowiedz

5

Uważam, że jednym z kanonicznych przykładów motywujących jest wybór między różnymi strukturami wdrażającymi ten sam podpis w oparciu o informacje dostępne tylko w czasie wykonywania.

Np. Wybór między hashtable a zrównoważonym drzewem binarnym jako implementacją mapy.

Istnieje kilka informacji na: https://forge.ocamlcore.org/docman/view.php/77/112/leroy-cug2010.pdf

wierzę projekt OCaml był pod wpływem podobnego przedłużenia o SML Claudio Russo - patrz np "Pierwszorzędne konstrukcje dla standardowego ML" http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8754&rep=rep1&type=pdf

+2

O ile pamiętam, Moscow ML, implementacja SML wykorzystująca lampę caml jako back-end, była pierwszą implementacją modułów pierwszej klasy. Odpowiednia sekcja dokumentacji Moscow ML odnosi się do plików mosml/examples/modules/{sita.sml, array.sml, choice.sml, matrix.sml} z dystrybucji dla przykładów. –

+0

@Pascal Ładne referencje dla przykładów. To jest rozszerzenie autorstwa Claudio, o którym wspomniałem. – RD1

Powiązane problemy