2014-09-10 84 views
1
(define (unknown (lambda (x y) 
    (cond 
    ((null? y) y) 
    ((x (car y)) (unknown x (cdr y)))) 
    (else (cons (car y) (unknown x (cdr y))))))) 

我是計劃的新手,想知道我在教科書中遇到的這個函數的用途。我的主要疑問在於((x(car y))是什麼,這個表達式如何在沒有任何操作符的情況下執行,但是在編譯時我沒有遇到任何錯誤。儘管我無法運行程序,因爲我爲X輸入值顯然是不適用的功能。請幫助。以下函數在Scheme編程語言中做了什麼

+1

哦好吧。所以x會採取類似「零」的東西? ? – hotinlavacoolinjava 2014-09-10 18:22:28

+0

是的。 __________ – 2014-09-10 23:12:10

回答

2

方案的功能可以採取函數作爲參數,並且可以返回的功能。您的代碼是有道理的,如果你在一個函數作爲參數傳遞。

如果調用這樣的代碼:

(unknown even? '(1 2 3 4 5)) 

那麼它應該返回列表(1 3 5)這是R A過濾功能eturns y的成員,其中將函數x應用於成員的結果是錯誤的。

+0

好吧,明白了。謝謝您的幫助。 – hotinlavacoolinjava 2014-09-10 18:25:43

+2

@hotinlava:np。去讀小Schemer,它有很多這樣的事情。 – 2014-09-10 18:27:20