LINUX.ORG.RU

История изменений

Исправление 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 определяет биндинг на весь блок, а значение только на участок после команды. Опять же вопрос: почему сделано именно так, для чего?