2011-07-14 20 views
14

Tôi đang cố gắng giữ mã Prolog của mình theo mô-đun và tôi tự hỏi liệu có ai có lời khuyên nào về cách thực hiện điều này không. Cách tôi đã làm điều này với đơn giản consult s, nhưng đó là nhận được cồng kềnh như số lượng các tập tin của tôi tăng và chống chọi với tên cuộc đụng độ. Có bất kỳ cấu trúc nào tương tự như cấu trúc của nhập "điển hình", chẳng hạn nhưLập trình ở quy mô lớn với prolog

%-------------------------------------------------------------------- compiler.pl 

[ scanner, parser, codegen ] . 

%-------------------------------------------------------------------- compile 

% compile(S, I) :- Compiling the source string S gives the list of instructions 
%     I 

compile(S, I) :- scan(S, T), parse(T, A), codegen(A, I) . 

%-------------------------------------------------------------------------------% 

ở đầu tệp nguồn? Nếu nó là chương trình cụ thể, tôi đang sử dụng gprolog. Cảm ơn trước sự giúp đỡ nào.

Trả lời

6

Lấy phiên bản phát triển Logtalk hiện, cung cấp hỗ trợ đầy đủ cho việc phát hành ổn định của GNU Prolog 1.4.0. Bạn có thể lấy nó bằng cách thực hiện thanh toán Subversion hoặc bản sao Git (xem http://logtalk.org/download.html để biết chi tiết). Hoặc chỉ gửi thư cho tôi một cách riêng tư và tôi sẽ xây dựng trình cài đặt cho bạn. Logtalk được thiết kế từ đầu để lập trình ở quy mô lớn. Bạn có thể sử dụng nó để viết các ứng dụng di động (Logtalk chạy như trên chín trình biên dịch Prolog khác nhau). Bạn thậm chí có thể sử dụng nó để chạy mã mô-đun Prolog trong các trình biên dịch Prolog như GNU Prolog không bao gồm một hệ thống mô-đun. Logtalk đi kèm với gần một trăm ví dụ, với các thư viện di động và tài liệu đầy đủ. Đi từ Prolog đến Logtalk khá dễ dàng. Viết mã di động nhịp mỗi ngày ;-)

10

GNU-Prolog không có hệ thống mô-đun chính hãng, do đó, cách tiếp cận của bạn hiện là tốt nhất bạn có thể nhận được. Có lẽ GNU-Prolog có thể thêm một hệ thống mô-đun trong tương lai, nhưng tôi sẽ không đặt cược một doanh nghiệp trên đó.

Hệ thống mô-đun thường xuyên nhất cho phép xác định trong các biến vị ngữ khác nhau có cùng tên vị ngữ và số nguyên. Do đó tránh được các xung đột tên của các vị từ. Các nguyên tử và functors vẫn giữ nguyên trên các ranh giới mô-đun. Các hệ thống như SICStus, YAP, SWI, Ciao, IF và tiêu chuẩn ISO có một hệ thống như vậy.

Một loại hệ thống mô-đun khác được cung cấp bởi XSB - được gọi là hàm functor.

4

Điều sai nói là đúng.
Tuy nhiên, bạn có thể xem xét Logtalk thực hiện một hệ thống mô-đun cũng như một hệ thống OO trên đầu trang của một số Prologs (bao gồm GNU-Prolog).

http://logtalk.org/faq.html#general-3

http://logtalk.org/

+1

Các hệ thống mô đun dựa trên biến vị ngữ được đề cập đều rất giống với nguồn mở hoặc thương mại. Chuyển từ một đến khác là tương đối đơn giản. Đó là, bạn có một số nhà cung cấp có thể. Hệ thống Logtalk khá khác biệt và chỉ có một nguồn. – false

+3

Có, Logtalk là khác nhau. Tuy nhiên, mặc dù có sự khác biệt, Logtalk áp dụng các mô-đun Prolog trong hầu hết các chức năng của chúng và có thể biên dịch các mô-đun Prolog thành các đối tượng. Ví dụ, hầu hết thư viện cơ bản SWI-Prolog hiện tại có thể được biên dịch và sử dụng làm đối tượng bằng cách chỉ thay đổi phần mở rộng tên tệp từ .pl thành .lgt. –