程序? return 变量为 false

Procedure? return false for variable

所以这行代码:

(procedure? (eval x))

当 x 是过程时计算结果为真,但如果 x 是变量则不起作用,因为我收到以下错误:

cannot reference undefined identifier

我如何重写该代码片段,使其在 x 为变量时计算为假,在 x 为真时计算为真?

为什么使用evalx 将在作为参数传递给 procedure? 之前自动求值,因此您可以只使用 (procedure? x):

> (define x (lambda (e) (+ e 1)))
> (procedure? x)
#t
> (define y '(1 2 3))
> (procedure? y)
#f
> (define z 3)
> (procedure? z)
#f