/ lib / Language / Pointfree /
/lib/Language/Pointfree/Syntax.hs
1 module Language.Pointfree.Syntax where
2
3 data Type = One
4 | Base String
5 | Fix Funct
6 | Type :*: Type
7 | Type :+: Type
8 | Type :-> Type
9 deriving Eq
10
11 data Funct = Id
12 | Const Type
13 | Funct :**: Funct
14 | Funct :++: Funct
15 deriving Eq
16
17 data Term = ID | Term :.: Term
18 | FST | SND | Term :/\: Term
19 | INL | INR | Term :\/: Term
20 | AP | Curry Term
21 | BANG
22 | Macro String [Term]
23 | Point String
24 | IN | OUT
25 | Hylo Type Term Term
26 | HyloO Type Term Term
27 deriving Eq
28