Type safe abstract binding trees for Haskell, using Vinyl