使用分配给变量的列表时,b-prolog成员函数可疑

时间:2016-11-25 18:40:38

标签: prolog

在终端中查询b-prolog时,在将列表分配给变量并使用内置"成员"的变量时,成员函数似乎表现不正常。功能。使用变量时,我无法解释结果。谁能告诉我这是否是正确的行为以及为什么会这样?

B-Prolog Version 8.1, All rights reserved, (C) Afany Software 1994-2014.
| ?- List = [a,b,c,d].
List = [a,b,c,d]
yes
| ?- member(a,List).
List = [a|_14c] ?;
List = [_148,a|_154] ?;
List = [_148,_150,a|_15c] ?;
List = [_148,_150,_158,a|_164] ?;
List = [_148,_150,_158,_160,a|_16c] ?
yes

| ?- member(a,[a,b,c,d]).

yes
| ?-

我正在使用在Windows 10 Pro上运行的bprolog v 8.1(10.0.143393 Build 14393)

1 个答案:

答案 0 :(得分:1)

顶级查询是独立的,不共享变量。如果你改为尝试:

| ?- List = [a,b,c,d], member(a,List).

您将获得预期的结果。