[Haskell-cafe] Attoparsec: match many, skipping rest

Ben Franksen ben.franksen at online.de
Fri Apr 17 08:18:25 UTC 2020


Am 11.04.20 um 22:23 schrieb amindfv at gmail.com:
> Say I've got an Attoparsec parser like:
> 
>     p = string "prio:" *> digit
> 
> And some text, e.g.
> 
>     s = "this is just a prio:5 example, I'd prio:6 very much like to prio:4 parse"
> 
> What's the most idiomatic way to apply p to s so that I get out a list ['5', '6', '4']?

If your input language is regular, as it appears to be, you could try
regex-applicative. Your desired combinator could be expressed simply as:

  many_ending_with p = many (many anySym *> p)

without incurring any backtracking cost.

Cheers
Ben



More information about the Haskell-Cafe mailing list