я эта проблема, чтобы работать на:Lisp: Как написать функцию высшего порядка
Суммы выше процедура заказа может быть обобщена еще дальше, чтобы захватить идею объединения терминов с фиксированным оператором. Математический оператор продукта является конкретным примером этой идеи, с умножением, заменяющим добавление оператора суммирования. Процедура аккумулирования, начатая ниже, предназначена для захвата этой идеи. Параметр комбайнера представляет собой оператор, который используется для сокращения терминов, а базовый параметр представляет значение, которое возвращается, когда нет оставшихся условий для объединения. Например, если мы уже осуществили процедуру накопиться, то мы могли бы определить порядок сумм, как:
(определить сумму (аккумулировать + 0))
Полное определение скапливаются так, что он ведет себя в соответствии с этим описание.
(define accumulate
(lambda (combiner base)
(lambda (term start next stop)
(if (> start stop)
...
...))))
Я вставил в двух последних строках:
base
(combiner base (accumulate (combiner start stop) start next stop))
, но я понятия не имею, если это правильно, ни как на самом деле использовать процедуру суммы для вызова аккумулировать и, следовательно, суммировать числа.
Не забудьте пометить свои домашние вопросы «домашней работой» –
@PaulMcMillan: Это не настоящий тег, слава богу! – rvighne
Это было одно в момент, когда я сделал комментарий. Видимо, политика изменилась за прошедшие 5 лет. –