以下代码在 SWI-Prolog 中运行:
?-foreach(member(X ,["1","2","3"]) ,(number_codes(Y,X),writeln(Y))).
1
false.
?- foreach(member(X ,["1","2","3"]) ,writeln(X)).
[49]
[50]
[51]
最佳答案
foreach/2 比 forall 更复杂,并且您遇到了使用的变量量化产生影响的情况。试试看
?- forall(member(X, ["1","2","3"]), (number_codes(Y,X), writeln(Y))).
1
2
3
是的。
似乎 foreach/2 保留了 Y
的绑定(bind)。
关于prolog - 为什么foreach只循环一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14374676/