检查某些东西是否是 Prolog 嵌套列表中的成员

Ric*_*ard 3 nested list prolog member

我想检查是否x是嵌套列表的成员,以便

member(x,[a,b,[c,d],[e,[f,g],[x,i]]])
Run Code Online (Sandbox Code Playgroud)

返回TrueFalse如果没有x。这有可能吗?

l4m*_*mpi 6

member通过添加一个检查项目是否是第一个元素的成员的子句,简单地扩展正常的递归定义:

member(X, [X|_]).                 %X is first element
member(X, [L|_]) :- member(X, L). %X is member of first element
member(X, [_|T]) :- member(X, T). %X is member of tail
Run Code Online (Sandbox Code Playgroud)