【发布时间】:2013-12-08 19:25:04
【问题描述】:
我无法理解差异列表,尤其是在这个谓词中:
palindrome(A, A).
palindrome([_|A], A).
palindrome([C|A], D) :-
palindrome(A, B),
B=[C|D].
谁能帮我看看发生了什么?
【问题讨论】:
-
第一个子句好像错了,代表身份
-
@CapelliC:不是身份,而是空列表。
-
@false 我不关注...
A不会与任何东西统一,而不仅仅是空列表?这怎么不是一般的身份关系? -
@false 我认为可能存在一些误传?我相信 CapelliC 的评论是指出 as write here 第一个子句定义了身份。您是说理想情况下,在正确实现回文的不同上下文中,此子句应该是空列表吗?
-
@aBathologist:OP 的程序是 DCG 的扩展。请参阅我的第一条评论。因此,它必须用作
palindrom(A,[]).
标签: prolog palindrome difference-lists