Scheme 未定义的标识符,文件中的求值表达式

Scheme 未定义的标识符,文件中的求值表达式,scheme,eval,racket,Scheme,Eval,Racket,如何设置,以便我可以调用eval,对同一文件中定义的引用形式的过程进行评估 最低限度的例子。我将这三个表达式写入一个文件 #lang racket (define (foo x) x) (define bar (eval '(foo 1))) 当我加载文件时,我得到以下信息 eval-tests.rkt> ; foo: undefined; ; cannot reference undefined identifier ; Context: ; /Users/.../code

如何设置,以便我可以调用
eval
,对同一文件中定义的引用形式的过程进行评估

最低限度的例子。我将这三个表达式写入一个文件

#lang racket

(define (foo x) x)

(define bar (eval '(foo 1)))
当我加载文件时,我得到以下信息

eval-tests.rkt> 
; foo: undefined;
;  cannot reference undefined identifier
; Context:
;  /Users/.../code/gen-scheme/lib/eval-tests.rkt:1:1 [running body]


完成后,请阅读Matthew Flatt关于评估的精彩注释:
#lang racket

(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))

(define (foo x) x)

(define bar (eval '(foo 1) ns))