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))))