comark-parser-0.1.0: extended/Data/Sequence/Extended.hs
module Data.Sequence.Extended
( module Data.Sequence
, module Data.Sequence.Extended
) where
import Data.Sequence
-- | Finds the leftmost element that satisfies the predicate.
-- Returns (prefix, element, suffix).
findl :: (a -> Bool) -> Seq a -> Maybe (Seq a, a, Seq a)
findl p s =
case breakl p s of
(prefix, rest) ->
case viewl rest of
EmptyL -> Nothing
a :< suffix -> Just (prefix, a, suffix)
-- | Finds the rightmost element that satisfies the predicate.
-- Returns (suffix, element, prefix).
findr :: (a -> Bool) -> Seq a -> Maybe (Seq a, a, Seq a)
findr p s =
case breakr p s of
(suffix, rest) ->
case viewr rest of
EmptyR -> Nothing
prefix :> a -> Just (suffix, a, prefix)