module Language.Haskell.Generate.Expression 
  ( Expression(..)
  , app
  ) where

import Language.Haskell.Exts.Syntax

newtype Expression t = Expression { runExpression :: Exp }

app :: Expression (a -> b) -> Expression a -> Expression b
app (Expression a) (Expression b) = Expression $ App a b