2013-01-17 35 views
5

Tôi mới dùng prolog và muốn lưu tất cả truy vấn trong tệp thay vì nhập bằng tay.làm cách nào để tạo kết quả truy vấn in prolog khi chạy tập lệnh prolog

Tôi có những sự kiện trong facts.pl:

likes(wallace, cheese). 
likes(grommit, cheese). 
likes(wendolene, sheep). 

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z). 

Sau khi đọc câu trả lời của this question, tôi đưa ra đoạn mã sau queries.pl:

main :- 
    write(likes(wallace, cheese)), 
    halt. 

:- initialization(['facts.pl']). 
:- initialization(main). 

Ở đây tôi muốn kiểm tra nếu likes(wallace, cheese) giữ , những gì tôi mong đợi là xuất ra một cái gì đó như yes hoặc no nhưng đầu ra thực tế là likes(wallace, cheese)

Tôi đã googled rất nhiều và cố gắng

X = likes(wallace, cheese), write(X).

X is likes(wallace, cheese), write(X).

X := likes(wallace, cheese), write(X).

nhưng không ai trong số họ làm việc.

Đó có thể là một câu hỏi thực sự dễ dàng đối với bạn, nhưng tôi không có ý tưởng về cách làm đúng.

BTW, tôi đang sử dụng GNU Prolog 1.4.1

Trả lời

3

Tôi nghĩ rằng bạn cần một cách để 'tag' mỗi truy vấn: đây là một cách đơn giản

query(likes(wallace, cheese)). 
query(likes(mickey, whisky)). 

% service predicates, check the library and use that if available 
forall(X,Y) :- \+ (X, \+ Y). 
writeln(T) :- write(T), nl. 

main :- 
    forall(query(Q), (Q -> writeln(yes:Q) ; writeln(no:Q))), 
    halt. 
Các vấn đề liên quan