aboutsummaryrefslogtreecommitdiff
path: root/src/Haskell/AST.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Haskell/AST.hs')
-rw-r--r--src/Haskell/AST.hs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/Haskell/AST.hs b/src/Haskell/AST.hs
index f8b5c72..072fd97 100644
--- a/src/Haskell/AST.hs
+++ b/src/Haskell/AST.hs
@@ -22,6 +22,7 @@ data Def = Def Name Expr
data Expr = App Expr [Expr]
| Ref Name
+ | Con Name
| Num Integer
| Tup [Expr]
| Lam [Name] Expr
@@ -71,6 +72,7 @@ instance Pretty Def where
instance Pretty Expr where
pretty (App e as) = Bracket "(" ")" "" (map pretty (e:as))
pretty (Ref n) = Leaf n
+ pretty (Con n) = Leaf n
pretty (Num n) = Leaf (show n)
pretty (Tup es) = Bracket "(" ")" "," (map pretty es)
pretty (Lam as e) = Bracket "(" ")" "" [Node ("\\" ++ intercalate " " as ++ " ->") [pretty e]]
@@ -124,6 +126,7 @@ instance AllRefs Def where
instance AllRefs Expr where
allRefs (App e es) = nub $ concatMap allRefs (e : es)
allRefs (Ref n) = [n]
+ allVars (Con _) = []
allRefs (Num _) = []
allRefs (Tup es) = nub $ concatMap allRefs es
allRefs (Lam ns e) = allRefs e \\ ns