Это курс SICP для раздела экологической модели:Почему (c1) возвращает 1, 2, 3 ect .. и не # <procedure: ... make_counter.rkt: 8: 5>?
(define make-counter
(lambda (n)
(lambda() (set! n (+ n 1))
n)))
Ниже, переводчик говорит, что (make-counter 0)
процедура:
> (make-counter 0)
#<procedure:...make_counter.rkt:8:5>
Ниже я определяю c1
, являющийся (make-counter 0)
.
(define c1 (make-counter 0)
Ниже, где я запутался, по причине возвращает счетчик значения вместо "procedure"
.
>(c1)
1
> (c1)
2
> (c1)
3
Мой мыслительный процесс является то, что если указывает на процедуру, (make-counter)
, то должен возвращать "procedure:...make_counter.rkt:8:5"
.
Потому что процедура -> процедура.
Я вижу, что должно произойти, я просто смущен, концептуально, как и почему.
Эти ответы помогают мне проверить мои мысли. Один кусок головоломки - как –
Пожалуйста, не забывайте: используйте полезные ответы и отметьте один как решение, чтобы оно было закрыто. Или переформулируйте вопрос. –
Наконец, я не понимаю, почему (c1) возвращает счетчик. Теперь его (счетчик 0). Работая вручную, я не понимаю, почему n не возвращается. Может кто-то объяснить это мне? –