事实证明Foldable
没有ByteString
可用的实例。我想在foldl'
或[Word8]
上编写一个使用ByteString
的函数,但我无法做到。由于ByteString
是数据方式,与[Word8]
相同,因此我似乎应该能够这样做。
是否有可用的软件包集成了这两个软件包,还是我必须自己使用类型类?
答案 0 :(得分:9)
查看MonoFoldable class包中定义的mono-traversable。
它包含ByteString
和[a]
的实例。
答案 1 :(得分:7)
lens
,则进行bytes遍历:
λ> import Data.ByteString.Lens
λ> import Control.Lens
λ> :t foldrOf bytes
foldrOf bytes
:: IsByteString s => (GHC.Word.Word8 -> r -> r) -> r -> s -> r
从某种意义上说,您要问的问题是lens
包的motivation:我们是否可以扩展Data.Foldable
和Data.Traversable
中的函数,以便不仅使用常规实例Foldable
和Traversable
,还有行为和撰写的对象,如可折叠和可遍历的对象?