我是prolog的新手,想要将所有查询保存在文件中,而不是手动输入.
我有这些事实facts.pl
:
likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).
friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).
Run Code Online (Sandbox Code Playgroud)
在阅读了这个问题的答案后,我想出了以下代码queries.pl
:
main :-
write(likes(wallace, cheese)),
halt.
:- initialization(['facts.pl']).
:- initialization(main).
Run Code Online (Sandbox Code Playgroud)
在这里,我想检查是否likes(wallace, cheese)
保持,我期望输出类似yes
或no
实际输出的东西likes(wallace, cheese)
我已经google了很多次尝试
X = likes(wallace, cheese), write(X).
X is likes(wallace, cheese), write(X).
X := likes(wallace, cheese), write(X).
但它们都不起作用.
对你来说这可能是一个非常简单的问题,但我不知道如何把事情弄清楚.
顺便说一下,我正在使用GNU Prolog 1.4.1
我认为您需要一种方法来“标记”每个查询:这里有一个简单的方法
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.
Run Code Online (Sandbox Code Playgroud)