module Eternity.Foldl.General where import Eternity.Prelude hiding (maximum) import Control.Foldl import qualified Data.Attoparsec.Text as B parsing :: B.Parser parsed -> Fold (Either Text parsed) folded -> Fold Text folded parsing parser = premap (bimap fromString id . B.parseOnly parser) ignoringLeft :: Fold right folded -> Fold (Either left right) folded ignoringLeft (Fold rightProgress rightStart rightStop) = Fold progress rightStart rightStop where progress !state = \ case Right right -> rightProgress state right Left _ -> state