unbound-generics (hackage): Specify the binding structure of your data type with an expressive set of type combinators, and unbound-generics handles the rest!  Automatically derives alpha-equivalence, free variable calculation, capture-avoiding substitution, and more. See Unbound.Generics.LocallyNameless to get started.  This is an independent re-implementation of Unbound but using GHC.Generics instead of RepLib. See the accompanying README for some porting notes.
Keywords: bsd3|language|library|bound|ghc-generics|haskell-library|substitution|unbound|variable-binding