Prolog 漂亮的打印序言术语

Prolog 漂亮的打印序言术语,prolog,pretty-print,Prolog,Pretty Print,如何在SWI Prolog中打印术语列表 我试过: 描述条款([term1,term2])。 但这只是在一个长流中写入,一个字符串甚至作为ascii字符代码列表出现——我希望在这里打印“abc”。这里有一个提示。。查找字符串和原子之间的区别。。如果您想将它们分开并分析字符串的各个字符(例如,使用nth0或nth1),您可能只需要将它们作为字符串保存。否则,原子在大多数情况下都能正常工作/很容易操纵 ?- write(["a", "b", "c"]). [[97],[98],[99]] true.

如何在SWI Prolog中打印术语列表

我试过:

描述条款([term1,term2])。


但这只是在一个长流中写入,一个字符串甚至作为ascii字符代码列表出现——我希望在这里打印“abc”。

这里有一个提示。。查找字符串和原子之间的区别。。如果您想将它们分开并分析字符串的各个字符(例如,使用nth0或nth1),您可能只需要将它们作为字符串保存。否则,原子在大多数情况下都能正常工作/很容易操纵

?- write(["a", "b", "c"]).
[[97],[98],[99]]
true.

?- write(['a','b','c']).
[a,b,c]
true.

这是SWI中经常出现的问题。默认情况下,“abc”是字符代码列表,因此打印为:

?- Xs = "abc". Xs = [97, 98, 99].
有关更多信息,请参见。

(应该说..第一个列表包含字符串,第二个原子)这是打印字符串的一个很好的答案,但我没有将其标记为答案,因为即使其中的字符串更好,CREATE子句仍然无法打印术语。 ?- set_prolog_flag(double_quotes,chars). true. ?- Xs = "abc". Xs = [a, b, c]. ?- use_module(library(double_quotes)). true. ?- Xs = "abc". Xs = "abc".