Hyper-polymorphic classes for Haskell