运行prolog脚本时,如何打印查询结果?



我是prolog新手,希望将所有查询保存在一个文件中,而不是手工输入。

我在facts.pl中有这些事实:

likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).
friend(X, Y) :- +(X = Y), likes(X, Z), likes(Y, Z).

读完这个问题的答案后,我想出了以下代码queries.pl:

main :-
    write(likes(wallace, cheese)),
    halt.
:- initialization(['facts.pl']).
:- initialization(main).

这里我想检查likes(wallace, cheese)是否成立,我所期望的输出是yesno,但实际输出是likes(wallace, cheese)

我在谷歌上搜索了很多,并尝试过

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

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

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

但是它们都不工作。

这对你来说可能是一个很简单的问题,但是我不知道如何把事情做好。

BTW,我使用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.

相关内容

  • 没有找到相关文章

最新更新