swi-prolog 打印多个变量

swi-prolog print multiple variables

我想在swi-prolog中打印多个变量,目前我是这样写的:

writeln('child link : '),
writeln(LINK_CHILD),
writeln('rule - four'),
writeln(REND_PARENTI),
writeln(REND_CHILDI)

所以每个变量都打印在新行上,我想不出在单行中打印它们的方法。感谢您的帮助

您可以使用 write 而不是 writeln,或者更好的是,使用 format:

?- format("~a~n~a:~a~n", [x, y, z]).
x
y:z
true.

或者,对于您的情况,类似于:

format("child link: ~w rule - four ~w", [LINK_CHILD, REND_PARENT....]),
flush_output

如果您想在行尾之前打印出来,则需要 flush_output。参见 SWI-Prolog 的 primitive character IO.

单行书写可以用 write/1 i.o 完成。 writeln/1.

可以通过使用 maplist/3 为参数列表(在本例中为打印原子列表)调用谓词(在本例中为 write/1)来写入任意数量的原子.

结果代码是:

?- maplist(write, ['child link : ',LINK_CHILD,'rule - four',REND_PARENTI,REND_CHILDI]).