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