implementation module Snug.Compile.Typing import Data.Error import Snug.Syntax instance type Expression where type locals e = case e of BasicValue bv -> type locals bv Symbol sym -> // TODO Constructor cons -> // TODO Case _ alts -> checkSameTypes "case alternatives" [type locals e \\ CaseAlternative _ e <- alts] ExpApp e1 e2 -> // TODO