aboutsummaryrefslogtreecommitdiff
path: root/ast/CC/Typed.hs
diff options
context:
space:
mode:
Diffstat (limited to 'ast/CC/Typed.hs')
-rw-r--r--ast/CC/Typed.hs19
1 files changed, 7 insertions, 12 deletions
diff --git a/ast/CC/Typed.hs b/ast/CC/Typed.hs
index 5b8ed38..535fd31 100644
--- a/ast/CC/Typed.hs
+++ b/ast/CC/Typed.hs
@@ -7,13 +7,10 @@ import CC.Pretty
import CC.Types
-data ProgramT = ProgramT [DeclT]
+data ProgramT = ProgramT [DefT]
deriving (Show, Read)
-data DeclT = DefT DefT -- import?
- deriving (Show, Read)
-
-data DefT = FunctionT TypeT Name [Name] ExprT
+data DefT = DefT Name ExprT
deriving (Show, Read)
data TypeT = TFunT TypeT TypeT
@@ -21,16 +18,17 @@ data TypeT = TFunT TypeT TypeT
| TyVar Int
deriving (Show, Read)
-data ExprT = CallT TypeT ExprT ExprT
+data ExprT = LamT TypeT Occ ExprT
+ | CallT TypeT ExprT ExprT
| IntT Int
| VarT Occ
deriving (Show, Read)
--- | Occurrence of a variable
data Occ = Occ Name TypeT
deriving (Show, Read)
exprType :: ExprT -> TypeT
+exprType (LamT typ _ _) = typ
exprType (CallT typ _ _) = typ
exprType (IntT _) = TIntT
exprType (VarT (Occ _ typ)) = typ
@@ -55,10 +53,7 @@ instance Pretty ExprT where
show n ++ " :: " ++ pretty t
instance Pretty DefT where
- pretty (FunctionT n e) = n ++ " = " ++ pretty e
-
-instance Pretty DeclT where
- pretty (DefT def) = pretty def
+ pretty (DefT n e) = n ++ " = " ++ pretty e
instance Pretty ProgramT where
- pretty (ProgramT decls) = concatMap ((++ "\n") . pretty) decls
+ pretty (ProgramT defs) = concatMap ((++ "\n") . pretty) defs