晚间!
我需要在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先生,非常感谢你.您提供了大量的信息,以帮助我自己解决问题.*拥抱
这很容易.使用列表的第一个元素初始化累加器:
(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 ......)或使用自己的.您的列表至少需要一个元素.
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |