
29 Jun
2011
29 Jun
'11
2:21 p.m.
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.