【发布时间】:2015-10-30 19:50:11
【问题描述】:
我试图在 findall 中使用 2 个模板,但由于第一个模板和第二个模板之间的 ' ' 而出现错误,它要求我输入一个操作数,我输入 + 然后它将 C 显示为 template1 ' +' template2 但我不希望 + 出现在 C 上。
也试过了 findall((+z-AS-Sesio-Hsemana, u-CU-Hsemana), between(1,NH,Sesio), C)
但是Hsemana和u-CU-Hsemana之间的','也出现了,我只想要一个空格''。
【问题讨论】:
-
Prolog 语法不支持术语之间的空格/空格来形成复合术语。如果您只是关心使用空格而不是逗号将信息输出到屏幕上,那么捕获结果并编写一个谓词,使用
write或print以您喜欢的格式将其写出。跨度> -
如果我打印 C 然后添加一些东西,它会打印:[C] something because C is a List
-
如果
C是一个列表(例如,如果C是[1,2,3])那么,是的,如果你是print或writeC,你会去获取[1,2,3],因为它就是这样。如果您想查看1 2 3,那么您必须编写一个接受列表的谓词,并将每个元素写出,后跟一个空格。如果这不是您想要的,那么您需要通过一些示例在您的问题中更详细地解释。请注意,findall的目的是收集谓词的所有解决方案,它不是输出格式化工具。 -
嗯,这不是我想要的,但我帮我解决了这个问题,谢谢!
-
我很高兴它有帮助。 :)
标签: prolog logic prolog-findall