Python的Reduce函数 - 用Scheme编写

oka*_*api 0 reduce scheme

晚间!

我需要在Scheme中编写一个reduce函数,它就像Python中的内置reduce函数一样.在Scheme中编写reduce函数很容易:

(define (reduce fn lis identity)
  (if (null? lis)
    identity
    (fn (car lis)
        (reduce fn (cdr lis) identity))))
Run Code Online (Sandbox Code Playgroud)

但是,此代码与Python reduce不同,后者仅使用两个参数(函数和要减少的项列表).

任何人都可以我写一个这样工作的Scheme函数吗?

(>(reduce*'(2 4 5 5))=> 200,是我们教授的例子.)

非常感谢,伙计和女孩们.你是如此有帮助<3

ETA:对Levien先生和Jester-Young先生,非常感谢你.您提供了大量的信息,以帮助我自己解决问题.*拥抱

kni*_*vil 5

这很容易.使用列表的第一个元素初始化累加器:

(define (py-reduce f ls) (fold f (car ls) (cdr ls)))

(py-reduce * '(2 4 5 5)) => 200
Run Code Online (Sandbox Code Playgroud)

随意使用另一个reduce函数而不是srfi-1的折叠(如reduce,fold-right ......)或使用自己的.您的列表至少需要一个元素.