head([Y],Y):-!.
head([X|XS],X).
我知道列表的头部存储在变量X上。
第一个条款是什么意思?这是一个削减?为什么呢?
答案 0 :(得分:3)
head/2
的实施只是:
head([X | _], X).
请注意,这里的下划线表示“我们不关心的零个或多个元素”。
没有必要单独列出只有一个元素的情况(然后使用剪切)。
答案 1 :(得分:1)
第一个句子意味着如果列表中只有一个元素,那么(Y)将具有头部。所以是的,它是一个削减,因为它告诉prolog如果它成功到那一点停止寻找答案。然后第二个子句扩展到列表中有多个元素。