2016-07-24 40 views
4

事实证明没有Foldable的实例可用。我想编写一个函数,在[Word8]ByteString上使用foldl',但我不能。由于ByteString与数据相同,与[Word8]相同,所以我应该可以。使用相同的函数折叠[Word8]和ByteString?

是否有可用于整合这两者的软件包,还是必须将我自己的软件与类型类一起滚动?

回答

7

ErikR的回答非常好。我只想插入一个旁注。如果你有lens你有bytes遍历:

λ> import Data.ByteString.Lens 
λ> import Control.Lens 
λ> :t foldrOf bytes 
foldrOf bytes 
    :: IsByteString s => (GHC.Word.Word8 -> r -> r) -> r -> s -> r 

在某种意义上你问的问题是motivationlens包:可以,我们在Data.FoldableData.Traversable扩展功能消耗的Foldable不仅普通实例和Traversable,但也是表现撰写像对象可折叠和traversables?

+0

Ach,你打我:) –