on 4e1760f help sign in
elk/src/Ast.hs
37 lines 966 B history raw
1module Ast where
3data Pattern = PData String [Pattern] | PVar String | PAnything
4 deriving (Show, Eq)
6data Expr = Number Int
7 | Chr Char
8 | Boolean Bool
9 | Range Expr Expr
10 | Access Expr String
11 | Binop String Expr Expr
12 | Lambda String Expr
13 | App Expr Expr
14 | If Expr Expr Expr
15 | Lift Expr [Expr]
16 | Fold Expr Expr Expr
17 | Async Expr
18 | Input String
19 | Let [(String,Expr)] Expr
20 | Var String
21 | Case Expr [(Pattern,Expr)]
22 | Data String [Expr]
23 deriving (Show, Eq)
25cons h t = Data "Cons" [h,t]
26nil = Data "Nil" []
27list = foldr cons nil
28tuple es = Data ("Tuple" ++ show (length es)) es
30delist (Data "Cons" [h,t]) = h : delist t
31delist _ = []
34pcons h t = PData "Cons" [h,t]
35pnil = PData "Nil" []
36plist = foldr pcons pnil
37ptuple es = PData ("Tuple" ++ show (length es)) es