2017-03-16 98 views
0

函數applyToAll假設要接受一個函數和一個List,然後把列表中的汽車應用到這個函數中。如何將列表中的每個元素應用於方案中的函數?

這是我迄今摸索出:

(define applyToAll(lambda (f L) 
       (cond 
        ((null? L)  '()) 
        (#t    (cons (L) (applyToAll f(car L)))) 
       ))) 

我不知道我做錯了。一機能的研究呼叫看起來像

(applyToAll (lambda (n) (* n n)) '(1 2 3)) 

,它會返回

(1 4 9) 

相反,它返回:函數調用:預計開括號後的功能,但收到(表1 2 3)

爲什麼我的代碼無法正常工作?

謝謝

+0

是'L'的功能列表?我看到它被用作兩者。 – Sylwester

回答

0

這聽起來像你正試圖實現'地圖'。

你得到的錯誤是因爲你正在調用一個列表,就好像它是一個函數。 (L) (),這意味着在計劃funtion調用 - scheme doc

您正在這裏同樣的錯誤:

(#t    (cons (L) (applyToAll f(car L)))) 

應用正確的方法是:

(function arg0 arg1 ... argn) 

您需要將f應用於列表中的每個元素。 這應該工作:

(缺點(F(汽車L))(applyToAll F(CDR L))))

第一elemnet:

(car L) 

列表的其餘部分:

(cdr L) 

GL

相關問題