2016-02-24 40 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)之前評估