[Haskell-cafe] why do I need class context in declaring data constructor?