You Bet

Haskell has do notation to take care of this pattern for us, since it occurs all over the place, not just parsers. First we must implement a type-class:

instance Monad Parser where
  (>>=) = bindParser
  return = value