如何访问嵌套函子(Prolog)中的特定值

如何访问嵌套函子(Prolog)中的特定值,prolog,member,functor,Prolog,Member,Functor,假设我们有一个嵌套函子列表: [state(a, [move(0, b), move(1, a)], b), state(b, [move(1, c), move(2, b)], c)]. 找出move(1,a)是否在此列表中的正确语法是什么,或者更确切地说,如果我们知道move(1,a)在那里,我们如何找出? 我知道我们可以使用member函数来确定c是否在functor列表中,但如何将其应用于嵌套functor列表?例如: ?- L=[state(a, [move(0, b), move

假设我们有一个嵌套函子列表:

[state(a, [move(0, b), move(1, a)], b),
 state(b, [move(1, c), move(2, b)], c)].
找出
move(1,a)
是否在此列表中的正确语法是什么,或者更确切地说,如果我们知道
move(1,a)
在那里,我们如何找出?

我知道我们可以使用member函数来确定c是否在functor列表中,但如何将其应用于嵌套functor列表?

例如:

?- L=[state(a, [move(0, b), move(1, a)], b), state(b, [move(1, c), move(2, b)], c)],
member(state(S, Moves, _), L), member(move(1, T), Moves).
我们得到(我缩写了
L
的输出)

只是比赛<代码>成员(状态(a、[move(0,b)、move(1,X)]、b)、ListOfFunctors)例如。。。
L = ...,
S = T, T = a,
Moves = [move(0, b), move(1, a)] ;
L = ...,
S = b,
Moves = [move(1, c), move(2, b)],
T = c ;
false.