On 19/10/2007, Cale Gibbard <cgibbard at gmail.com> wrote: Er, or should that be: class Functor c m => Monad c m where return :: a -> m a join :: m (m a) -> m a (>>=) :: m a -> (c a (m b)) -> m b x >>= f = join (f . x) join x = x >>= id - Cale