definition module sem
from Data.Either import :: Either
-from AST import :: AST
-from lex import :: Error
-from parse import :: ParserOutput
+from AST import :: AST, :: Pos, :: Type
-:: SemOutput :== Either Error AST
+:: SemError
+ = ParseError Pos String
+ | UnifyError Pos Type Type
+ | Error String
+:: SemOutput :== Either [SemError] AST
-sem :: ParserOutput -> SemOutput
+
+instance toString SemError
+
+sem :: AST -> SemOutput