2017-03-16 91 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

相关问题