【问题标题】:Any way to map functions with more than one argument in Scheme/Racket?有什么方法可以在 Scheme/Racket 中映射具有多个参数的函数?
【发布时间】:2020-02-02 01:49:14
【问题描述】:

我目前正在上 Racket/Scheme 的入门课程,目前正在学习 map、apply 和 fold。在大多数情况下,我一直假设 map 只能在接受单个参数的 lambda 上工作。但是,对于某些问题,我会发现在某种程度上解决这个问题非常有用 - 例如,拥有一个可以映射到列表的函数,同时还带有一个累加器,该累加器可以为每个递归函数调用独立更新。虽然由于害怕违反荣誉准则,我无法得到比这更具体的内容,但如果您打算使用 map,有什么办法可以解决无法为每个递归调用提供累加器的问题?

【问题讨论】:

    标签: scheme racket


    【解决方案1】:

    map 获取任意数量的列表:

    (map + '(1 2 3) '(3 2 1) '(3 3 3)) ; ==> (7 7 7)
    

    fold 有一个累加器:

    (foldl (lambda (a b c acc) (+ a b c acc)) 1 '(1 2 3) '(3 2 1) '(3 3 3)) ; ==> 22
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多