[Haskell-beginners] Constrained polymorphic functions as natural transformations