2017-03-06 17 views

Trả lời

4
  • includere-exports các thành phần của mô-đun trong hiện tại str cấu trúc: mô-đun bạn đang ở sẽ chứa tất cả các định nghĩa có trong Ppx_core.
  • open làm cho các thành phần của mô-đun directly accessible trong môi trường nhập văn bản. Thay vì nhập Core.Std.element, bạn chỉ có thể nhập element.
  • #require là lệnh Topfind tìm thư viện và tải thư viện, giúp các mô-đun của bạn có thể truy cập được với bạn.
  • #use hoạt động như thể copying a full file trực tiếp vào hoạt động của bạn.

Lưu ý rằng # -keywords không phải là một phần của ngôn ngữ OCaml nhưng là các lệnh phức tạp: chúng sẽ không hoạt động nếu bạn cố gắng biên dịch tệp của mình.

2

Một tuyên bố include Module.Name trong định nghĩa mô-đun sẽ bao gồm tất cả các định nghĩa từ mô-đun có tên Module.Name. Các định nghĩa sẽ được bao gồm gần như chúng được sao chép. Nếu include Module.Name xảy ra bên trong định nghĩa kiểu mô-đun (còn gọi là định nghĩa chữ ký), thì Module.Name phải là loại mô-đun hợp lệ (được biết đến với trình biên dịch). Nó sẽ bao gồm định nghĩa của một loại mô-đun như nó (không bao gồm bất kỳ ràng buộc chia sẻ kiểu nào).

Các open Module.Name tuyên bố xảy ra ở cả hai thực hiện mô-đun và module chữ ký, sẽ cho phép bạn tham khảo các định nghĩa (giá trị, chủng loại, các môđun con) của một Module.Name mà không sử dụng đầy đủ tên, ví dụ, sử dụng tên ngắn mà không tiền tố Module.Name.

Tuyên bố #require không phải là tuyên bố và không phải là một phần của ngữ pháp OCaml. Đó là chỉ thị đặc biệt của OCaml toplevel - vòng lặp tương tác. Giống như ipython có chỉ thị riêng của nó. Chỉ thị require sẽ tải gói được chỉ định và tất cả các gói phụ thuộc của nó. Hơn nữa, chỉ thị này không phải là một phần của phân phối chuẩn OCaml toplevel, nhưng được thêm vào bởi tập lệnh topfind là một phần của bộ công cụ ocamlfind. Chỉ thị #use được sử dụng để tải và đánh giá tập lệnh. Ví dụ: #use "topfind" sẽ tải và đánh giá tập lệnh topfind từ thư mục thư viện chuẩn OCaml. Tập lệnh này sẽ đăng ký chỉ thị require. Ngoài ra còn có các chỉ thị #load#load_rec, hoạt động ở cấp độ chi tiết hơn, thay vì các gói - các chỉ thị này có ý định tải thư viện.

Các vấn đề liên quan