3 -- Copyright : Tomáš Musil 2014
6 -- Maintainer : tomik.musil@gmail.com
7 -- Stability : experimental
9 -- Data types for Hindley-Milner terms.
25 type TypeVarName = String
26 type TypeName = String
28 data Type = Primitive TypeName | TypeVar TypeVarName | TypeFunction Type Type deriving (Eq)
29 data TypeScheme = TScheme Type | TSForAll TypeVarName TypeScheme deriving (Eq)
31 data Term = Var VarName | Lam VarName TypedTerm | App TypedTerm TypedTerm | Let VarName TypedTerm TypedTerm | Lit Literal
32 data TypedTerm = NTTerm Term | TTerm Term TypeScheme
33 data Literal = LInt Integer | LBool Bool | LFunc PrimOp deriving (Eq)
35 data PrimOp = If deriving (Eq, Show)