2012-03-19 20 views
6

Giả sử tôi có tệp thư viện OCaml foo.cma. Có một công cụ dòng lệnh để in chữ ký của các chức năng và các loại khác được xác định ở đó không? Tiện ích ocamlbrowser có vẻ là dựa trên windows (phàn nàn về biến môi trường $ DISPLAY). Các trường hợp sử dụng là tôi đang làm một:kiểm tra chữ ký thư viện (.cma) từ bảng điều khiển

ocamlc -c foo.cma main.ml 

và nhận được:

File "main.ml", line 13, characters 33-47: 
Error: Unbound value ListUtil.split 

ListUtil.split phải cư trú tại foo.cma nhưng tôi không biết một công cụ giao diện điều khiển dựa trên để xác minh nó.

Trả lời

9

trên Debian/Ubuntu, bạn có "ocamlobjinfo":

ocamlobjinfo stdlib.cma 

sẽ hiển thị tất cả các tên đơn vị bao gồm trong stdlib.cma. Sau đó, bạn có thể tạo một tệp ngắn:

include SomeModule 

và biên dịch bằng -i để xem những gì được xác định trong mô-đun SomeModule.

5

Trong mục cấp đầu, tôi chỉ tải các tập tin CMA:

#load "foo.cma";; 

Sau đó, tôi đang xác định một mô-đun chỉ để nhìn thấy chữ ký:

module Chunk = Foo;; 
+0

Đúng, đó là hữu ích, tuy nhiên nó giả định rằng người ta biết tên của các mô-đun được biên dịch cùng nhau trong tệp cma. Ví dụ: nếu tôi có tệp foo.cma với hai mô-đun riêng biệt trong đó, hãy nói foo1 và foo2, được biên dịch như sau: 'ocamlc -a foo1.cmo foo2.cmo -o foo.cma' thì có cách để lấy liệt kê tất cả các mô-đun được tìm thấy trong tập tin .cma hoặc có phải biết tên trước đó không? Có vẻ lạ trong mọi trường hợp mà một tiện ích bàn điều khiển không được cung cấp ra khỏi hộp. –

+0

Với phương pháp toplevel, bạn có thể xem tất cả các mô-đun trong tệp cma. Để biết mô-đun trước, bạn phải kiểm tra tệp mli hoặc nếu không có, trong tệp nguồn. Nếu không, tôi không biết thực sự biết làm thế nào để làm điều đó. – cago

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