chainr :: Parser s a -> Parser s (a -> a -> a) -> Parser s a
chainr pe po = h <$> many (j <$> pe <*> po) <*> pe
   where j x op = (x `op`)
         h fs x = foldr ($) fs x
chainr :: Parser s a -> Parser s (a -> a -> a) -> Parser s a
chainr pe po = h <$> many (j <$> pe <*> po) <*> pe
   where j x op = (x `op`)
         h fs x = foldr ($) fs x
chainr pe po = h <$> many (j <$> pe <*> po) <*> pe
   where j x op = (x `op`)
         h fs x = foldr ($) fs x