Я прочитал книгу о схеме, и у нее есть следующий пример:
(define map
(lambda (f s)
(if (null? s)
'()
(cons (f (car s))
(map f (cdr s)))))
(map (lambda (s)
(set! s '(1 2 3 4))
'hello)
'(a b c d))
Это говорит о том, что в динамическом объеме мы войдем в бесконечный цикл. Но почему? Как я понял, после того как мы подадим заявку, мы приедем на карту с
f = (lambda (s)
(set! s '(1 2 3 4))
'hello)
и s = '(a b c d)
. Теперь для первого запуска мы применим f
к (car '(a b c d)
:
((lambda (s)
(set! s '(1 2 3 4))
'hello)
(car '(a b c d)))
А теперь изменилось a
на (1 2 3 4)
. И так далее .. Где здесь петля?