gpt4 book ai didi

haskell - 组成两个折叠

转载 作者:行者123 更新时间:2023-12-05 05:55:59 24 4
gpt4 key购买 nike

假设(来自镜头库)我有

fold1 :: Fold s a
fold2 :: Fold s a

我想以这样的方式组合这些

toListOf (combine fold1 fold2) s == toListOf fold1 s ++ toListOf fold2 s

combine 最简单的实现是什么? (当然可以根据 toListOf 等手动实现它,但我怀疑存在更纯粹的组合实现。)

最佳答案

看起来高效的实现方式很简单

combine f1 f2 k s = f1 k s *> f2 k s

尽管也可以通过 ReifiedFold,尽管这似乎使用了效率可能较低的 toListOf 实现:

combine f1 f2 = runFold (Fold f1 <> Fold f2)

我花了一些时间才明白为什么明显不对称的 *> 就足够了。

关于haskell - 组成两个折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69329888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com