Description
Alpha equivalence for TH Exp.
Description
Compare TH expressions (or clauses, patterns, etc.) for alpha equivalence. That is, compare for equality modulo the renaming of bound variables.
areExpAEq [| \x -> x |] [| \y -> y |]
-- Truedo
   let x = mkName "x"
   let y = mkName "y"
   runQ $ (LamE [VarP x] (VarE x)) @= (LamE [VarP y] (VarE y))
-- TrueThis can be useful when for instance testing libraries that use Template Haskell - usually correctness is only defined up to alpha equivalence.