【发布时间】:2014-02-28 13:46:23
【问题描述】:
ass(a).
ass(b).
ass(c).
con(c,r).
arg(A, L) :- forall(member(S, L), (ass(S), \+ con(S,A))).
如果我运行arg(r, [a,b]),它会工作,但如果我运行arg(r,X),它会返回:ERROR out of global stack。我希望它返回[a,b]。我知道这是因为L 是无限的,但是我该如何解决这个问题。
【问题讨论】:
-
如果您解释了
arg谓词的含义,那将会有所帮助。 -
@mbratch 是的,你是对的,对不起!我需要找到所有 ass() 且与 A 不相反的原子。
-
@mbratch:你为什么要再次添加标签 swi-prolog。在这个问题中根本没有任何特定于 SWI 的内容......
-
@false 抱歉,我以为 OP 使用的是 SWI 特定谓词,但我错了。已删除。
标签: prolog