如何在 Prolog 中调用列表的列表,例如我有这个列表:
list([[1,2,3],[4,5],[6,7]]).
我想在 element_at 函数中调用我的列表:
element_at(X,[X|_],1).
element_at(X,[_|L],K) :-
element_at(X,L,K1),
K is K1 + 1.
当我打电话时
element_at(X,list,2)
我没有结果。
最佳答案
I don't have a result.
好吧,你确实有一个结果:失败。但你期望成功。下面是一个非常通用的方法,您可以自己在 Prolog 中定位此类错误:
If you encounter unexpected failure, simply generalize your program.
在您的特定情况下,element_at(X,list,2)
失败。也许应该用 3
代替 2
?或者也许是另一个号码? Prolog 中有一种简单的猜测方法:只需用变量替换 3
即可!出于同样的原因,您可以删除定义中的目标。我将使用 *
来标记它们。
这是对您的程序的概括,但仍然失败 - 因此其余部分一定有错误:
:- op(950, fy, *). *(_). ?- element_at(X, list, _/*2*/). element_at(X,[_/*X*/|_],_/*1*/). element_at(X,[_|L],K) :- *element_at(X,L,K1), *K is K1 + 1.
关于prolog - 如何在prolog中调用列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47741440/