vector-builder-0.3.5: library/VectorBuilder/Alternative.hs
{-|
Alternative utilities.
For instance, they can be applied with parsing libraries.
-}
module VectorBuilder.Alternative
where
import VectorBuilder.Prelude
import Data.Vector (Vector)
import qualified VectorBuilder.Builder as A
import qualified VectorBuilder.Vector as B
{-# INLINABLE many #-}
many :: Alternative m => m a -> m (Vector a)
many m =
fmap B.build loop
where
loop = ((<>) <$> A.singleton <$> m <*> loop) <|> pure mempty