[Haskell-cafe] Declaring Functors for Type constrained data types