implementation module sem from Data.Map import :: Map import Data.Either import Control.Monad.State import StdMisc import AST from parse import :: ParserOutput from yard import :: Error :: Gamma :== Map String Type :: Env a :== State Gamma a sem :: ParserOutput -> SemOutput sem (Left p) = Left p sem (Right (AST vd fd)) = undef // foldM semVarDecl vd // >>= \gamma ->foldM typecheck gamma fd semVarDecl :: Env VarDecl semVarDecl = undef