Prolog 如何使用差异列表和3+;列表串联?

Prolog 如何使用差异列表和3+;列表串联?,prolog,Prolog,我的代码中有以下状态: 下一步之后,我得到 (cycle) T1=[26, 25|T1] 在绑定中。如何解决这个问题并使最后一个conc正常工作?正如你所看到的,我知道如何使用单个conc,但我不知道如何使用多个conc 首先,在X和List的尾部使用相同的参数(都是T) 但我认为这不是唯一的问题 TmpL1=[[25 | T1]-T1[26 | T2]-T2[24,25 | T1]-[25 | T1]] 第一个和第三个列表具有相同的尾部(T1) 第三个列表的尾部也有25个,尾部应该只有未满足

我的代码中有以下状态: 下一步之后,我得到

(cycle) T1=[26, 25|T1]

在绑定中。如何解决这个问题并使最后一个conc正常工作?正如你所看到的,我知道如何使用单个conc,但我不知道如何使用多个conc

首先,在X和List的尾部使用相同的参数(都是T)

但我认为这不是唯一的问题

TmpL1=[[25 | T1]-T1[26 | T2]-T2[24,25 | T1]-[25 | T1]] 第一个和第三个列表具有相同的尾部(T1)
第三个列表的尾部也有25个,尾部应该只有未满足的参数

谓词的目的,比如conc/3,它完全是为了“隐藏”实现细节(在这种情况下,只有破折号操作符)。尝试在不“扩展”内部细节的情况下表达算法,例如,使用L1而不是List1-T1等。确保可读性。@chac,为了在差异列表中使用conc,我们必须使用L1-T的形式。请简要解释一下你的意思。如果你发布了我将尝试重写的代码,我现在有点懒……现在有问题了,谢谢你的帮助。也许下周我会粘贴代码。