練習問題:方案報價過程
傳遞給一個過程的參數不必總是相同類型的。定義一個過程迴應,它接受任何類型的值並返回該值。
我目前做:
(define echo
(lambda (x)
(quote x)))
,但問題是該程序不會將打印的x,如果我鍵入數字或值。 任何人都可以幫忙嗎?
練習問題:方案報價過程
傳遞給一個過程的參數不必總是相同類型的。定義一個過程迴應,它接受任何類型的值並返回該值。
我目前做:
(define echo
(lambda (x)
(quote x)))
,但問題是該程序不會將打印的x,如果我鍵入數字或值。 任何人都可以幫忙嗎?
你被要求執行的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
(quote x)阻止評估符號x,所以返回值不是x 的值,而是符號本身。塗抹時
(lambda (x) x)
:
身份函數接受一個參數,返回它
((lambda (x) x) 4)
;=> 4
((lambda (x) (quote x)) 4)
;=> x
爲什麼你認爲你需要'quote'? –