f
fmap (a b) fa fb
m m
return b a b
() a b (b a c) a c
join m (m a) m a
join mma mma id
ma f join fmap f ma
fmap f ma ma (return f)
То есть, чтобы можно было задать instance класса Monad двумя способами: задать instance класса Functor и добавить затем return и join, либо же задать return и (>>=) (кстати, у тебя в посте опечатка: там (>>=), а не (>>)) и получить instance класса Functor автоматически.
no subject
Date: 2006-07-17 08:55 am (UTC)