logo search
TurboProlog / Документация / TOM_1

Другой пример - изменения в списках

Иногда необходимо из одного списка выработать другой. Вы делаете

это, работая со списком, заменяя элемент за элементом вычисленным значе-

нием. Вот, например, программа, которая каждому числу списка добавит 1:

/* Программа CH08EX04.PRO - изменения списков */

trace

domains

list = integer*

predicates

add1(list, list)

clauses

add1([], []). /* граничное условие*/

add1([Head|Tail], [Head1|Tail1]):- /*отделить голову*/

/*от остального списка*/

Head1= Head+1, /*добавить к 1-му элементу*/

add1(Tail, Tail1)./*вызвать элемент из остатка списка*/

Переведя это на естественный язык получим:

Добавить 1 ко всем элементам пустого списка, создать другой пус-

той список.

Добавить 1 ко всем элементам любого другого списка, добавить 1 к

голове и сделать это головой результирующего списка, затем доба-

вить 1 к каждому элементу хвоста списка и сделать это хвостом ре-

зультата.

Введите программу (отметьте опцию trace компилятора). Затем введите

целевое утверждение add1([1, 2, 3, 4], NewList)., а затем выполните прог-

рамму, используя клавишу F10. Турбо Пролог выдаст результат:

NewList= [2, 3, 4, 5]

1 Solution