我对Prolog如何运作有疑问。我从未学过Prolog,但现在是时候面对那种语言了。我搜索了palindrome check
的一段代码,我发现了这个
pal([]).
pal([_]).
pal(Pal) :-
append([H|T], [H], Pal),
pal(T).
例如,我致电pal([abccba]).
和pal([abcdba]).
。我理解它是如何工作的(它采用头部和尾部 - 1并将头部贴在尾部的末端)。但是,我不明白为什么在使用pal(T)
调用[c, c]
时结果为真,但是当使用[c, d]
调用append
时,它会在{{1}上失败}}?
任何人都可以向我解释它是如何运作的吗?