úίAlpha equivalence in TH(c) Julian K. Arni, 2014BSD3jkarni@gmail.com experimentalNone368BHM"The main Alpha Equivalence class. $ is by default defined in terms of . @ is exposed for composability: it is easy to recursively build  instances from other @ instances by delegating the lookup update to the subinstances.¢Given a variable binding lookup compares arguments for alpha equivalence, setting the state to Just of updated lookup in case of equivalence, Nothing otherwise.“Compares its arguments for alpha equivalence. The default implementation uses Lookup for its LookupTbl, but more efficient datatypes can be used.Convenience function that uses  on .3areExpAEq [| let x = 5 in x |] [| let y = 5 in y |]True. Quoted expressionQuoted expression !"#$%&'()*+,-.&   !"#$%&'()*+,-./       !"#$%&'()*+,-./01th-alpha-0.2.0.2Language.Haskell.TH.AlphaAlphaEqlkEq@= areExpAEqexpEqualtemplate-haskellLanguage.Haskell.TH.SyntaxrunQ LookupSTQLookupST LookupSTM unLookupST LookupTblinsertLReqInTblisInLisInRLookup emptyLookup mapLookuphoist'toQ runLookupST runLookupST' expEqual' matchEqual letDecEqual typeEqual kindEqual clauseEqual predEqualpatEqual~=~isInL' insertLRLST insertLRLSTty$fAlphaEqDPatIdentity$fAlphaEqDPredIdentity$fAlphaEqDClauseIdentity$fAlphaEqDKindIdentity$fAlphaEqDTypeIdentity$fAlphaEqDLetDecIdentity$fAlphaEqDMatchIdentity$fAlphaEqDExpIdentity $fAlphaEqExpQ$fMFunctorLookupSTM$fMonadTransLookupSTM