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