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

时间:2016-04-08 20:26:03

标签: 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, _)是否在那里,我们如何才能找出_的值是什么?

我知道我们可以使用成员函数来查明c是否在仿函数列表中,但是我们如何将它应用于嵌套仿函数列表?

1 个答案:

答案 0 :(得分:0)

例如:

?- 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的输出)

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.