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