理解这个prolog实现的头

时间:2010-04-06 22:27:48

标签: prolog

head([Y],Y):-!.

head([X|XS],X).

我知道列表的头部存储在变量X上。

第一个条款是什么意思?这是一个削减?为什么呢?

2 个答案:

答案 0 :(得分:3)

head/2的实施只是:

head([X | _], X).

请注意,这里的下划线表示“我们不关心的零个或多个元素”。

没有必要单独列出只有一个元素的情况(然后使用剪切)。

答案 1 :(得分:1)

第一个句子意味着如果列表中只有一个元素,那么(Y)将具有头部。所以是的,它是一个削减,因为它告诉prolog如果它成功到那一点停止寻找答案。然后第二个子句扩展到列表中有多个元素。