[英]Folding over [Word8] and ByteString with same function?
事實證明, ByteString
沒有可用的Foldable
實例。 我想編寫一個在[Word8]
或ByteString
上使用foldl'
的函數,但我不能。 由於ByteString
是數據方式,與[Word8]
相同,似乎我應該能夠。
是否有可用的軟件包集成了兩者,還是我必須將自己的類型分類?
看看單遍歷包中定義的MonoFoldable類 。
它有ByteString
和[a]
實例。
ErikR的答案很棒。 我只想插入一個旁注。 如果你有lens
你有字節遍歷:
λ> import Data.ByteString.Lens
λ> import Control.Lens
λ> :t foldrOf bytes
foldrOf bytes
:: IsByteString s => (GHC.Word.Word8 -> r -> r) -> r -> s -> r
從某種意義上說,你問的問題是lens
包的動機 :我們可以擴展Data.Foldable
和Data.Traversable
的函數, Data.Traversable
可以使用Foldable
和Traversable
常規實例,還可以使用行為和組合像foldables和traversables的對象?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.