История изменений
Исправление monk, (текущая версия) :
Ну придумали бы хотябы спец макрос для такого.
Так он пишется в 3 строки:
(define-syntax lexical-eval
(syntax-rules ()
[(_ cmd) (eval cmd)]
[(lexical-eval cmd var ...) ((eval `(lambda (var ...) ,cmd)) var ...)]))
(let ([a 1]) (lexical-eval '(+ a 1) a)) ; => 2
Исходная версия monk, :
Ну придумали бы хотябы спец макрос для такого.
Так он пишется в 3 строки:
(define-syntax (lexical-eval stx)
(syntax-case stx ()
[(_ cmd) #'(eval cmd)]
[(lexical-eval cmd var ...)
#'((eval `(lambda (var ...) ,cmd)) var ...)]))
(let ([a 1]) (lexical-eval '(+ a 1) a)) ; => 2