Describir: Comparing Approaches to Generic Programming in Haskell