Вопрос достаточно наивный -- почему в 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)