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