Could ReadP's '+++' (symmetric choice) operator be implemented for all Monads with the 'interleave' function mentioned in Backtracking, Interleaving, and Terminating Monad Transformers?  This paper was a tough read for me, but it looks like they solve the same problem, but one interleaves computations within a monad and the other does it from the outside.  Or am I just confused?

Thanks,
Greg