如何将列表中的每个元素应用于方案中的函数?
问题描述:
函数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)
为什么我的代码无法正常工作?
谢谢
答
这听起来像你正试图实现'地图'。
你得到的错误是因为你正在调用一个列表,就好像它是一个函数。 (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
是'L'的功能列表?我看到它被用作两者。 – Sylwester