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
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