История изменений
Исправление monk, (текущая версия) :
А здесь, правда через глобальную область, уже можете.
Это не внутренний скоп, а глобальный. Твой код абсолютно идентичен:
(define a 1)
(define tst (lambda(x) (+ a x)))
(define tst2 (lambda(x) (if (eq? x 'a) (set! a 10)) (write (tst 1))))
Если надо иметь общий скоп для tst и tst2, то его можно явно описать
(define-values (tst tst2)
(let ((a 1))
(values
(lambda(x) (+ a x)))
(lambda(x) (if (eq? x 'a) (set! a 10)) (write (tst 1))))))
И да, определить в другом месте ещё одну функцию, которая могла бы менять этот скоп (переменную a) ты уже не сможешь.
Исправление monk, :
А здесь, правда через глобальную область, уже можете.
Это не внутренний скоп, а глобальный. Твой код абсолютно идентичен:
(define a 1)
(define tst (lambda(x) (+ a x)))
(define tst2 (lambda(x) (if (eq? x 'a) (set! a 10)) (write (tst 1))))
Если надо иметь общий скоп для tst и tst2, то его можно явно описать
(define-values (tst tst2)
(let ((a 1))
(values
(lambda(x) (+ a x)))
(lambda(x) (if (eq? x 'a) (set! a 10)) (write (tst 1))))))
И да, определить в другом месте ещё одну функцию, которая могла бы менять этот скоп (переменную a) ты уже не сможешь.
Исходная версия monk, :
А здесь, правда через глобальную область, уже можете.
Это не внутренний скоп, а глобальный. Твой код абсолютно идентичен:
(define a 1)
(define tst (lambda(x) (+ a x)))
(define tst2 (lambda(x) (if (eq? x 'a) (set! a 10)) (write (tst 1))))
Если надо иметь общий скоп для tst и tst2, то его можно явно описать
(define-values (tst tst2)
(let ((a 1))
(values
(lambda(x) (+ a x)))
(lambda(x) (if (eq? x 'a) (set! a 10)) (write (tst 1))))))