implementation module sem import qualified Data.Map as Map from Data.Func import $ import Data.Either import Control.Monad.State import StdMisc 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