module Syntax where -- | Usual syntax for type-preserving term-abstraction. class Abstractable repr where -- | Lambda term (abstract). lam :: (repr a -> repr b) -> repr (a -> b) -- | Term application (unabstract). (.@) :: repr (a -> b) -> repr a -> repr b; infixl 9 .@