2012-09-09 20 views
1

練習問題:方案報價過程

傳遞給一個過程的參數不必總是相同類型的。定義一個過程迴應,它接受任何類型的值並返回該值。

我目前做:

(define echo 
    (lambda (x) 
    (quote x))) 

,但問題是該程序不會將打印的x,如果我鍵入數字或值。 任何人都可以幫忙嗎?

+0

爲什麼你認爲你需要'quote'? –

回答

4

你被要求執行的identity function。如果你的解釋提供了吧,echo過程可以被實現爲一個別名:

(define echo identity) 

或在球拍values別名:

(define echo values) 

如果沒有,這是很簡單的從頭實現echo :只是返回什麼作爲參數傳遞,有沒有必要使用quote爲:

(define (echo x) x) 

或者使用明確一個lambda

(define echo (lambda (x) x)) 

以上所有的程序將接受任何形式的價值和返回值,例如:

(echo "hello") 
> "hello" 
(echo 42) 
> 42 
(echo (quote x)) 
> 'x 
2

(quote x)阻止評估符號x,所以返回值不是x 的值,而是符號本身。塗抹時

(lambda (x) x) 

身份函數接受一個參數,返回它

((lambda (x) x) 4) 
;=> 4 

((lambda (x) (quote x)) 4) 
;=> x