【发布时间】:2015-02-02 23:33:41
【问题描述】:
在 Prolog 中,我可以调出 REPL 以交互方式测试 Prolog 代码(交互模式),我也可以将代码写在文件中以从命令行执行(批处理模式)。
在交互模式下,我使用setof 函数获取所有结果。
?- [likes].
?- setof(X, likes(sam, X), L).
L = [chips, chop_suey, chow_mein, dahl, kurma, pizza, spaghetti, sweet_and_sour, tandoori].
我可以继续向?- likes(sam, X)询问结果,
我也可以使用once 函数只得到一个结果。
?- once(likes(sam,X)).
X = dahl.
因为我可以使用相同的 setof 函数以批处理模式打印出结果。
:- initialization main.
main :-
[likes],
setof(X, likes(sam, X), L),
write(L),
halt.
那么,如何获取并打印出once(likes(sam,X)) 的结果呢?
我尝试使用L2 = once(likes(sam, X) 在L2 中打印出结果,但出现错误。
一般来说,如何获得交互模式的结果?
例如,如何以批处理方式打印出?- likes(sam, dahl)的结果(真或假值)?
【问题讨论】:
-
您的第一个问题,使用:
once(likes(sam,X)), write(X), nl。你的第二个问题,使用:( likes(sam, dahl) -> write('true') ; write('false') ), nl。这就是你所追求的吗?
标签: prolog