2010-07-29 3 views
6

Gần đây OCaml 3.12 giới thiệu một feature các module đóng gói hạng nhất:Sử dụng tốt các mô-đun đóng gói OCaml là gì?

First-class gói mô-đun.

  • loại mới của biểu thức loại, cho module đóng gói: (module PT)
  • loại mới của ngôn luận, để đóng gói một module như một giá trị hạng nhất: (module MODEXPR : PT).
  • Loại biểu thức mô-đun mới, để giải nén một giá trị hạng nhất làm mô-đun: (val EXPR : PT).
  • PT là loại gói của biểu mẫu S hoặc S with type t1 = ... and ... and type tn = ... (S là loại mô-đun).

Tôi có thể tìm các ví dụ hoặc giấy tờ khuyến khích sử dụng tính năng này ở đâu?

Trả lời

5

Tôi tin rằng một trong những ví dụ thúc đẩy kinh điển là lựa chọn giữa các cấu trúc khác nhau thực hiện cùng một chữ ký tại dựa trên thông tin chỉ có sẵn khi chạy.

Ví dụ: chọn giữa cây có thể bắt chước và cây nhị phân cân bằng khi triển khai Bản đồ.

Có một số thông tin tại địa chỉ: https://forge.ocamlcore.org/docman/view.php/77/112/leroy-cug2010.pdf

tôi tin rằng các thiết kế OCaml bị ảnh hưởng bởi một phần mở rộng tương tự cho SML bởi Claudio Russo - xem ví dụ "Cấu trúc hạng nhất cho tiêu chuẩn ML" http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8754&rep=rep1&type=pdf

+2

Theo như tôi nhớ, Moscow ML, một triển khai SML sử dụng ánh sáng caml như back-end, là người đầu tiên triển khai mô-đun hạng nhất. Phần thích hợp của tài liệu của Moscow ML đề cập đến các tệp mosml/example/modules/{sieve.sml, array.sml, choice.sml, matrix.sml} từ bản phân phối cho các ví dụ. –

+0

@Pascal Đẹp tham khảo cho các ví dụ. Đó là phần mở rộng của Claudio mà tôi đã đề cập. – RD1