purescript-contrib/purescript-parsing

manyMonoid?

jamesdbrock opened this issue · 0 comments

https://discord.com/channels/864614189094928394/865401680497737758/1050733797278228500

@artemisSystem
is there a combinator in parsing that works like many but accumulates in an arbitrary monoid?

like this:

manyMonoid   s a. Monoid a  Parser s a  Parser s a
manyMonoid = many >>> map fold
manyMonoid p = tailRecM go empty
where
go accum = alt
  do
    x <- p
    pure (Loop (accum <> x))
  do
    pure (Done accum)

See also https://pursuit.purescript.org/packages/purescript-arrays/7.1.0/docs/Data.Array#v:foldRecM