2016-07-24 58 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,你打我:) –