Понимание этой прологовой реализации главы - PullRequest
4 голосов
/ 07 апреля 2010
head([Y],Y):-!.

head([X|XS],X).

Я понимаю, что заголовок списка хранится в переменной X.

Что означает первое предложение?Это разрез?Почему?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2010

Реализация head/2 это просто:

head([X | _], X).

Обратите внимание, что подчеркивание здесь означает "ноль или более элементов, которые нас не волнуют".

Нет необходимости выделять случай, когда в списке есть только один элемент (а затем использовать вырез).

1 голос
/ 07 апреля 2010

Первое предложение означает, что если у вас есть только один элемент в списке, его истинное значение будет иметь (Y) заголовок. Так что да, это сокращение, потому что оно говорит прологу, чтобы он прекратил искать ответы, если он успешен до этого момента. Затем второе предложение расширяется наличием более одного элемента в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...