2016-02-24 41 views
1

所以这行代码错误:程序?返回变量

(procedure? (eval x)) 

计算结果为真时,x是一个过程,但如果x是因为我碰到下面的错误变量不起作用:

cannot reference undefined identifier 

如何重写代码片段,以便在x为变量时评估为false,在x为true时为true?

回答

2

为什么使用eval

> (define x (lambda (e) (+ e 1))) 
> (procedure? x) 
#t 
> (define y '(1 2 3)) 
> (procedure? y) 
#f 
> (define z 3) 
> (procedure? z) 
#f 
x将自动作为参数传递给 procedure?,所以你可以只使用 (procedure? x)之前评估