LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

Вычисление полиномов я просто переписал чуть покрасивее с помощью let*. iterate-while f c i создает список '(i, f(i), f(f(i)), ...), пока условие c не выполнится для очередного элемента. В качестве условий я подставляю условия из вашего списка, так получая аналог цикла. Затем я для каждого элемента полученного списка вычисляю соответствующий полином, получая список полиномов от соответствующих элементов. Можно было бы написать ленивую версию, чтобы генерировать список i по мере необходимости, но это не имеет большого смысла, раз вы все равно будете хранить весь список полиномов.

Исходная версия Siborgium, :

Вычисление полиномов я просто переписал чуть покрасивее с помощью let*. iterate-while f c i создает список '(i, f(i), f(f(i)), ...), пока условие c не выполнится для очередного элемента. В качестве условий я подставляю условия из вашего списка, так получая аналог цикла. Затем я для каждого элемента полученного списка вычисляю соответствующий полином, получая список полиномов от соответствующих элементов. Можно было бы написать ленивую версию, чтобы генерировать список i по мере необходимости, но это не так уж необходимо, раз вы все равно будете хранить весь список полиномов.