История изменений
Исправление monk, (текущая версия) :
Ну или let везде.
Не рекомендуется: http://www.ccs.neu.edu/home/matthias/Style/style/Choosing_the_Right_Construct...
На самом деле ничего страшного в этом нет, привыкнуть можно. Неясно одно: если define влияет на начало блока, то почему он не устанавливает там значение?
Вот такое работает
(let ()
(set! y 1)
(define x (+ 1 y))
(define y 2)
(define x2 (+ 1 y))
(cons x x2))
'(2 . 3)
Получается, что define определяет биндинг на весь блок, а значение только на участок после команды. Опять же вопрос: почему сделано именно так, для чего?
Исходная версия monk, :
Ну или let везде.
Не рекомендуется: http://www.ccs.neu.edu/home/matthias/Style/style/Choosing_the_Right_Construct...
На самом деле ничего страшного в этом нет, привыкнуть можно. Неясно одно: если define влияет на начало блока, то почему он не устанавливает там значение?
Вот такое работает
(let ()
(set! y 1)
(define x (+ 1 y))
(define y 2)
(define x2 (+ 1 y))
(cons x x2))
Получается, что define определяет биндинг на весь блок, а значение только на участок после команды. Опять же вопрос: почему сделано именно так, для чего?