我是Prolog的新手并试图弄清楚它是如何运作的。所以任何人都可以帮助我使用以下代码:
whatisthis([]).
whatisthis([_, b| L]):- whatisthis(L).
那么Prolog什么时候回归' True'如果查询具有以下格式:
?- whatisthis(X).
我尝试了一些不同的输入和唯一返回的' True'是X = []。
答案 0 :(得分:2)
此查询甚至是您可以查询X
将为何的声明:
?- whatisthis(X).
X = [] ;
X = [_G1242, b] ;
X = [_G1242, b, _G1248, b] ;
X = [_G1242, b, _G1248, b, _G1254, b] ;
X = [_G1242, b, _G1248, b, _G1254, b, _G1260, b] ;
X = [_G1242, b, _G1248, b, _G1254, b, _G1260, b, _G1266|...]
如果你按分号; ,它将发出下一个结果。 _Gxxxx
部分是未绑定的变量。你可以在那里写任何东西。
因此每个X
都是 的偶数长度列表,其中每个第二个元素都是b
。因此,以下示例将成功:
[]
[a, b]
[2, b]
[1, b, 4, b]
[a, b, 1, b]
[f(a,b), b, b(f,a), b]
[1, b, 4, b, 2, b, 5, b]