{-# OPTIONS_GHC -F -pgmF qweave -optF OverridableApplications #-}
{-# LANGUAGE MultiParamTypeClasses,TypeFamilies #-}

module Examples.TestPP where

import QuickWeave.Runtime.Applyable 

data Exp = Var String 
  | App  Exp Exp 
  deriving Show
           
instance Applyable Exp Exp where 
  type Result Exp Exp = Exp 
  fromApp = App

e1 :: Exp
e1 = Var "f"

e2 :: Exp
e2 = Var "x"

test = e1 e2

main = print test