Scheme 帮助创建方案映射多个函数
我应该定义一个函数,它以函数列表和另一个列表作为参数,并返回一个值列表,这些值是通过在列表的元素上按顺序应用所有函数获得的 我得出了以下结论,但我收到了错误:Scheme 帮助创建方案映射多个函数,scheme,Scheme,我应该定义一个函数,它以函数列表和另一个列表作为参数,并返回一个值列表,这些值是通过在列表的元素上按顺序应用所有函数获得的 我得出了以下结论,但我收到了错误: +: expects type <number> as 1st argument, given: (1 2 3); other arguments were: 1 您将错误的函数传递到map。不要通过((汽车乐趣列表)lst),试着只通过(汽车乐趣列表)你的措辞对我来说有点不清楚。你应该做以下事情吗?有两个列表,一个是过程(
+: expects type <number> as 1st argument, given: (1 2 3); other arguments were: 1
您将错误的函数传递到
map
。不要通过((汽车乐趣列表)lst)
,试着只通过(汽车乐趣列表)
你的措辞对我来说有点不清楚。你应该做以下事情吗?有两个列表,一个是过程(我们称之为列表P),另一个是值(我们称之为列表V)。因此,您希望找到一个列表,其中:
- 列表参考0=(P0 V0)
- 列表参考1=(P1(P0 V1))
- 列表参考2=(P2(P1(P0 V2))
(define (map-many procs vals)
(let ((applied (map (car procs) vals))
(if (null? vals)
vals
(cons (car applied) (map-many (cdr procs) (cdr applied)))))))
您的错误是:
(null?lst)
而不是(null?乐趣列表)
上完成递归该函数应该像
(map(apply compose fun list)lst)
+1一样工作,在(null?lst)
和(null?fun list)
这件事上做得很好!
(define (map-many procs vals)
(let ((applied (map (car procs) vals))
(if (null? vals)
vals
(cons (car applied) (map-many (cdr procs) (cdr applied)))))))
(define (map-many fun-list lst)
(if (null? fun-list) lst
(map (car fun-list)
(map-many (cdr fun-list) lst))))