簡體   English   中英

折疊[Word8]和ByteString具有相同的功能?

[英]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.FoldableData.Traversable的函數, Data.Traversable可以使用FoldableTraversable常規實例,還可以使用行為組合像foldables和traversables的對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM