prolog成员谓词:理解行为

时间:2016-02-28 21:54:22

标签: list prolog

SWI-Prolog提供了一个内置函数,用于将元素的成员资格推断为列表。

?- member(blah,[blah,bleh,blach]).                               
true .

根据this source,成员定义如下:

member(X, [X|_]).        % member(X, [Head|Tail]) is true if X = Head 
                         % that is, if X is the head of the list
member(X, [_|Tail]) :-   % or if X is a member of Tail,
  member(X, Tail).       % ie. if member(X, Tail) is true.

在尝试更好地理解成员的工作方式时,我在查询某些元素是其成员的所有列表时观察到以下内容:

?- member(x,List).                           
List = [x|_G268] ;                                               
List = [_G267, x|_G271] ;                                        
List = [_G267, _G270, x|_G274] ;                                 
List = [_G267, _G270, _G273, x|_G277] ;                          
List = [_G267, _G270, _G273, _G276, x|_G280] ;
List = [_G267, _G270, _G273, _G276, _G279, x|_G283] ;
List = [_G267, _G270, _G273, _G276, _G279, _G282, x|_G286] 

有没有人解释这些_G2xx值的含义和来源?

0 个答案:

没有答案