The expression
f <$$> p creates a fresh permutation
parser consisting of parser
p. The the final result of the
permutation parser is the function
f applied to the return
value of
p. The parser
p is not allowed to accept
empty input - use the optional combinator (
<$?>) instead.
If the function
f takes more than one parameter, the type
variable
b is instantiated to a functional type which
combines nicely with the adds parser
p to the
(
<||>) combinator. This results in stylized code where a
permutation parser starts with a combining function
f
followed by the parsers. The function
f gets its parameters
in the order in which the parsers are specified, but actual input can
be in any order.