函数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)
相反它返回:函数调用:期望一个函数在打开括号后但收到(list 1 2 3)
有关我的代码无法正常工作的任何帮助吗?
由于
答案 0 :(得分:0)
听起来你正在尝试实施地图'。
你得到的错误是因为你正在调用一个列表,好像它是一个功能。 (L) ()这意味着方案中的功能调用 - scheme doc
你在这里犯了同样的错误:
(#t (cons (L) (applyToAll f(car L))))
正确的申请方式是:
(function arg0 arg1 ... argn)
您需要将f应用于列表中的每个元素。 这应该有效:
(cons(f(car L))(applyToAll f(cdr L))))
第一个elemnet:
(car L)
列表的其余部分:
(cdr L)
GL