Встроенный элемент предиката (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.
Я очень новичок в прологе, поэтому любая помощь будет признательна.