如何访问嵌套函子(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.