{- |
Definition of a datatype that reports on the success of a parser.
-}
module Sound.MIDI.Parser.Report where


{- |
This datatype is the result of a parser.
First it stores a sequence of warnings.
Warnings are for corruptions of the input which can be fixed.
After encountering a series of warnings,
there is finally an end,
either a successful one, with the result as @(Right result)@
or an eventual non-fixable problem indicated by @(Left errorMessage)@.
-}
data T a =
   Cons {
      warnings :: [UserMessage],
      result   :: Either UserMessage a
   }
   deriving (Show, Eq)

type UserMessage = String