[Haskell-cafe] GADTs and Scrap your Boilerplate