给定一个数字列表,比如说,如果你有 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)
但是,我认为应该有更优雅但同样灵活的解决方案。这只是丑陋的。
我是函数式编程的新手,想听听有关代码的任何建议。
谢谢。