Given input in form A,B,C
where the order is not fixed (eg C,B,A
might be possible too), how would I parse the string into a tuple (a,b,c)
so that the result is ordered again?
Bigger example:
Input A:
A 1
B 2
C 3
Input B:
C 3
B 2
A 1
Parsers:
a = "A " *> decimal
b = "B " *> decimal
c = "C " *> decimal
How do I write a parser that will give (1,2,3)
for Input A and B.
Edit: I have to more exact: they aren't all decimals ... Else choice
would be the combinator of choice here.
You can use Text.Parsec.Perm:
{-# LANGUAGE TupleSections, NoMonomorphismRestriction #-}
import Text.Parsec
import Text.Parsec.Perm
import Control.Applicative
a = ...
b = ...
c = ...
p = permute (
(,,) <$$> a <||> b <||> c)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With