内置谓词 member(x, List) 检查列表中是否存在成员,但当列表中有列表时,它只检查第一个深度。我正在尝试确切了解成员的深度。例如:
?- memberDepth(a, [b, c, [d], [[e, f, [], [g], a], j], [k]], Depth).
Depth = 3 .
所以基本上,它会在列表中找到“a”的第一个实例的深度。如果该成员不存在,它将返回 Depth = 0。如果我可以按顺序找到该成员的所有实例的深度,这也很有用,例如:
?- memberDepthAll(a, [b, c, [a], [[e], a], [[a]]], Depth).
Depth = 2 ;
Depth = 2 ;
Depth = 3 ;
Depth = 0 ;
false.
我对 prolog 很陌生,因此将不胜感激。