[Haskell-beginners] Various style at instance of a typeclass
Stephen Tetley
stephen.tetley at gmail.com
Wed Jun 29 18:05:46 CEST 2011
On 29 June 2011 16:36, Haisheng Wu <freizl at gmail.com> wrote:
> Well, how did you know Monad is with kind :: * -> * ?
If I was looking at the docs I'd see these two pieces
> class Monad m where
> (>>=) :: forall a b. m a -> (a -> m b) -> m b
As (m a) and (m b) are used in the method (>>=) and but only m is
specified in the class declaration, it would tell me m is :: * -> *.
There is an extension in GHC (probably {-# LANGUAGE KindSignatures #-}
) where you can specify kinds in the class declaration:
> class Monad (m :: * -> *) where
Personally I wouldn't be upset if this was the only valid syntax -
it's redundant but I find it clearer.
I'm not sure what references are available. I think constructor
classes were originally implemented in Gofer (a Haskell variant) and
when they were in Gofer but not Haskell, people seemed to make a clear
distinction between the two. Nowadays people just call them "type
classes" and have got used to the kinds of the common classes.
More information about the Beginners
mailing list