lectures(monday, nolecture).
lectures(tuesday, vp).
lectures(tuesday, se).
lectures(tuesday, ddbms).
lectures(wednessday, ds).
lectures(wednessday, mpl).
lectures(thursday, vp).
lectures(thrusday, se).
lectures(friday, ds).
lectures(friday, mpl).
lectures(saturday, ai).
lectures(saturday, ddbms).
?- lectures(friday, X), write(X),nl.
Run Code Online (Sandbox Code Playgroud)
查询只打印第一条记录为ds,我想打印特定日期的所有记录,即星期五,结果应为ds和mpl.
告诉我!
aqu*_*qua 10
添加fail.到查询的末尾:
| ?- lectures(friday, X), write(X), nl, fail.
ds
mpl
no
| ?-
Run Code Online (Sandbox Code Playgroud)
另请参阅这个非常相似的问题,因此在提出新问题之前,请尝试稍微使用搜索.
顺便说一句,如果你想让它更有用,你可以将它包装在谓词中:
display_lectures(Day) :-
lectures(Day, X),
write(X),
nl,
fail
;
true.
Run Code Online (Sandbox Code Playgroud)
你的版本或@aqua的重要补充是真正的脱节.它会使这个调用在更大的谓词中可用,所以我想我会提到它.
另外,这是另一种方法(如果你的实现有某种形式forall/2):
display_lectures(Day) :- forall(lectures(Day, X), (write(X), nl)).
Run Code Online (Sandbox Code Playgroud)