X-Git-Url: http://git.tomasm.cz/fp.git/blobdiff_plain/bff68fbafa3711186b19a1c5dcc16becb49f162a..763aa13445f67ffe289fe6f3186dd269a909d8a5:/src/HM/Term.hs?ds=inline diff --git a/src/HM/Term.hs b/src/HM/Term.hs index cf4cf36..fc705af 100644 --- a/src/HM/Term.hs +++ b/src/HM/Term.hs @@ -10,13 +10,15 @@ module HM.Term ( -- * Types - VarName + Literal(..) + , VarName , TypeVarName , TypeName , Term(..) , TypedTerm(..) , Type(..) , TypeScheme(..) + , PrimOp(..) ) where type VarName = String @@ -26,5 +28,8 @@ type TypeName = String data Type = Primitive TypeName | TypeVar TypeVarName | TypeFunction Type Type deriving (Eq) data TypeScheme = TScheme Type | TSForAll TypeVarName TypeScheme deriving (Eq) -data Term = Var VarName | Lam VarName TypedTerm | App TypedTerm TypedTerm | Let VarName TypedTerm TypedTerm +data Term = Var VarName | Lam VarName TypedTerm | App TypedTerm TypedTerm | Let VarName TypedTerm TypedTerm | Lit Literal data TypedTerm = NTTerm Term | TTerm Term TypeScheme +data Literal = LInt Integer | LBool Bool | LFunc PrimOp deriving (Eq) + +data PrimOp = If deriving (Eq, Show)