definition module sem import qualified Data.Map as Map from Data.Either import :: Either from AST import :: AST, :: Pos, :: Type, :: FieldSelector from StdOverloaded import class toString :: SemError = ParseError Pos String | UnifyError Pos Type Type | FieldSelectorError Pos Type FieldSelector | UndeclaredVariableError Pos String | Error String :: Gamma :: SemOutput :== Either [SemError] (AST, Gamma) instance toString SemError instance toString Gamma sem :: AST -> SemOutput