我正在学习 Prolog。我正在试验一个elemindex
谓词,形式elemindex(element, index, list)
为 ,例如,elemindex(1,0,[1,2,3,1]).
或elemindex(3,0,[1,2,3,1]).
。
由于实例化限制,我最终得到了这个:
elemindex(E, 0, [E|_]).
elemindex(E, s(M), [_|L]) :- elemindex(E,M,L).
但是,如果我查询?- elemindex(1,N,[1,2,3,1]).
,如我的示例所示,Prolog 会响应:
N = 0
N = s(s(s(0)))
yes
这当然有效,但我想s(s(s(0)))
至少显示为3
. 此外,我无法执行类似的查询?- elemindex(E, 3, [1,2,3,4]).
,但是更改要使用的代码N is M+1
会使我失去评估第一种查询的能力。
所以,我的问题有两个:
- 我怎样才能在我的结果
s(s(s(0)))
中显示3
? - 我怎样才能实现
elemindex
这样我可以查询元素和索引?