程序? return 变量为 false
Procedure? return false for variable
所以这行代码:
(procedure? (eval x))
当 x 是过程时计算结果为真,但如果 x 是变量则不起作用,因为我收到以下错误:
cannot reference undefined identifier
我如何重写该代码片段,使其在 x 为变量时计算为假,在 x 为真时计算为真?
为什么使用eval
? x
将在作为参数传递给 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
所以这行代码:
(procedure? (eval x))
当 x 是过程时计算结果为真,但如果 x 是变量则不起作用,因为我收到以下错误:
cannot reference undefined identifier
我如何重写该代码片段,使其在 x 为变量时计算为假,在 x 为真时计算为真?
为什么使用eval
? x
将在作为参数传递给 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