diff options
Diffstat (limited to 'src/Haskell/AST.hs')
-rw-r--r-- | src/Haskell/AST.hs | 3 |
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 |