26 lines
413 B
Haskell
26 lines
413 B
Haskell
module Gyehoek.Syntax where
|
|
|
|
import Data.Text (Text)
|
|
import Data.List (List)
|
|
|
|
|
|
type Name = Text
|
|
|
|
data Prim = PrimAdd | PrimSub | PrimMul | PrimDiv
|
|
deriving (Show)
|
|
|
|
data Val
|
|
= ValInt Int
|
|
| ValNil
|
|
| ValPrim Prim
|
|
| ValLambda (List Name) Exp
|
|
| ValVar Name
|
|
deriving (Show)
|
|
|
|
data Exp
|
|
= ExpLet (List (Name, Exp)) Exp
|
|
| ExpApply Exp (List Exp)
|
|
| ExpProgn (List Exp)
|
|
| ExpVal Val
|
|
deriving (Show)
|