Вопрос достаточно наивный -- почему в sum-list рекурсия не сворачивается в цикл? (define summator (lambda (initial-value) (lambda (proc) (proc (lambda (value) (summator (+ initial-value value))) initial-value)))) (define sum-list (lambda (list-arg) (let loop ((current-summator (summator 0)) (rest-list list-arg)) (current-summator (lambda (next-proc result) (if (null? rest-list) result (loop (next-proc (car rest-list)) (cdr rest-list)))))))) Это из-за замыкания lambda (next-proc result)? Если да, то как переписать код, чтобы сворачивалось? :)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Почему в scheme не любят set! ? (2014)
- Форум Необязательные параметры функции в Scheme (2014)
- Форум Readable Lisp S-expressions Project (2013)
- Форум GIMP - Scheme (Script-Fu) - Cохранение слоев в png (2017)
- Форум [Scheme][Lisp][Макры] Есть вопросы. (2010)
- Форум Closure в ELisp (XEmacs!) не работает :( (2005)
- Форум Помогите сделать макрос красивым (2013)
- Форум [common lisp] Макрос: перевести 'index' в ':index' (2011)
- Форум [common lisp][ищу морфизм] ещё одна годная задачка про списки (2010)
- Форум Racket Scheme. Рекурсивное деление полиномов с остатков (через списки) (2020)