module Language.Pointfree.Syntax where data Type = One | Base String | Fix Funct | Type :*: Type | Type :+: Type | Type :-> Type deriving Eq data Funct = Id | Const Type | Funct :**: Funct | Funct :++: Funct deriving Eq data Term = ID | Term :.: Term | FST | SND | Term :/\: Term | INL | INR | Term :\/: Term | AP | Curry Term | BANG | Macro String [Term] | Point String | IN | OUT | Hylo Type Term Term | HyloO Type Term Term deriving Eq