[Haskell-beginners] complex typeclass/constraint question