GADTs in implementation of Template Haskell