给定一个数字列表,比如说,如果你有 x -1 = 0 ,你(1 3 6 10 0)
如何计算差异 (x i - x i-1 )?
(本例中的结果应该是(1 2 3 4 -10)
)
我发现这个解决方案是正确的:
(定义(pairwise-2 f init l) (第一的 (折叠 (λ (x acc-data) (let ([result-list (first acc-data)] [prev-x (第二个 acc-data)]) (列表 (追加结果列表 (list(fx prev-x))) X))) (列表空 0) l))) (pairwise-2 - 0 '(1 3 6 10 0)) ;; => (1 2 3 4 -10)
但是,我认为应该有更优雅但同样灵活的解决方案。这只是丑陋的。
我是函数式编程的新手,想听听有关代码的任何建议。
谢谢。