TTGing the lambda lifter
This commit is contained in:
parent
f4f1786be3
commit
a1e9624d5e
5 changed files with 67 additions and 13 deletions
28
src/Abs.hs
Normal file
28
src/Abs.hs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{-# LANGUAGE TypeFamilies, PatternSynonyms, StandaloneDeriving #-}
|
||||
|
||||
module Abs where
|
||||
|
||||
import Data.String
|
||||
|
||||
data Program a = Program [Bind a]
|
||||
|
||||
data Bind a = Bind Ident [Ident] (Exp a)
|
||||
|
||||
newtype Ident = Ident String
|
||||
deriving (Eq, Ord, Show, Data.String.IsString)
|
||||
|
||||
data Exp a = EId (IdFamily a) Ident
|
||||
| EInt (IntFamily a) Integer
|
||||
| EAdd (AddFamily a) (Exp a) (Exp a)
|
||||
| EApp (AppFamily a) (Exp a) (Exp a)
|
||||
| EAbs (AbsFamily a) Ident (Exp a)
|
||||
| ELet (LetFamily a) [Bind a] (Exp a)
|
||||
| EExp (ExpFamily a) (Exp a)
|
||||
|
||||
type family IdFamily a
|
||||
type family IntFamily a
|
||||
type family AddFamily a
|
||||
type family AppFamily a
|
||||
type family AbsFamily a
|
||||
type family LetFamily a
|
||||
type family ExpFamily a
|
||||
Loading…
Add table
Add a link
Reference in a new issue