【发布时间】:2013-01-19 16:01:15
【问题描述】:
我正在使用 prolog 脚本进行所有查询,代码如下:
:- initialization(run).
writeln(T) :- write(T), nl.
queryAll :-
forall(query(Q), (Q ->
writeln('yes':Q) ;
writeln('no ':Q))).
run :-
queryAll,
halt.
query( (1,2,3) = (X,Y,Z) ).
问题是queryAll 只会打印“是”或“否”,而我想看到统一结果,例如:
X = 1
Y = 2
Z = 3
如何在序言中做到这一点? 提前致谢。
【问题讨论】:
-
如果我在 gprolog 中运行,添加 forall/2 后,我会看到
yes:((1,2,3)=(1,2,3))。您可以尝试format('yes:~w~n', [Q])而不是 writeln(yes:Q),但似乎您还有其他问题。您需要查看变量名称吗? -
请注意,您可以使用选项
variable_names/1在GNU-Prolog(最新版本)中方便地读取和写出变量名。
标签: prolog gnu-prolog unification