+import AST
+from parse import :: ParserOutput
+from yard import :: Error
+
+:: Gamma :== 'Map'.Map String Type
+:: Env a :== State Gamma a
+
+sem :: ParserOutput -> SemOutput
+sem (Left p) = Left p
+sem (Right (AST vd fd)) = Right $ AST vd fd
+// foldM semVarDecl vd
+// >>= \gamma ->foldM typecheck gamma fd
+
+semVarDecl :: VarDecl -> Env VarDecl
+semVarDecl (Vardecl pos type ident expr) = undef
+
+
+
+