
Thanks Stephen. Your explanation is comprehensive.
Well, how did you know Monad is with kind :: * -> * ?
What about the Arrow (From Control.Arrow) class?
Did you have any references or something regarding such concepts?
-Haisheng
On Wed, Jun 29, 2011 at 10:21 PM, Stephen Tetley
The class Monad is more specifically a "constructor class" rather than a type class.
Constructor classes have particular arities (numbers of parameters - "holes") called "kinds".
Monad is a constructor class with kind :: * -> *
(Write w) - has kind :: * -> *
Write - has kind :: * -> * -> *
(Write w a) - has kind :: *
Thus only the first is compatible with the Monad class.
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners