-module Typecheck (typeCheckExp, typeCheckStm, typeCheckVar) where
+module Typecheck (typeCheck,typeCheckExp, typeCheckStm, typeCheckVar) where
import Abssyntax
assert True _ = return ()
assert False s = fail s
+typeCheck :: [Stm] -> IO ()
+typeCheck s = runStateT (mapM typeCheckStm s) [empty] >> return ()
+
typeCheckExp :: (MonadState Types m) => Exp -> m Type
typeCheckExp (BiOpExp e o e') = do
t1 <- typeCheckExp e