使用foldMap而不是其变体的性能或其他类似原因?

时间:2017-07-13 18:34:47

标签: haskell fold monoids

我在自定义数据类型observations :: [Obs]中列出了大约10.000个观察结果,我希望将其聚合到统计对象:: Stat中。折叠似乎是一个明智的选择。我发现自己有两种选择。

(1)定义一个函数accumulate :: Stat -> Obs -> Stat,然后我将其折叠(严格地)。 foldl' accumulate acc0 observations

但是我的统计对象只包含Count和Sum等累加器,所以应该有一个monoidal结构。这给了我一个选择

(2)定义convert :: Obs -> Stat并使用来自Data.Foldable的foldMap,如foldMap convert observations

我的问题 采用单线方式的原因是什么?性能?可维护性?其他

0 个答案:

没有答案