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值的含义和来源?