{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE MultiParamTypeClasses #-} module Examples.Simple where import Data.Comp data Lambda t a = App a a | Abs (Maybe (Term t)) data Arith a = Const Int data LambdaType a = Fun a a data IntType a = IntType type Type = LambdaType :+: IntType type Sig t = Lambda t :+: Arith