Talk:Functor hierarchy proposal

From HaskellWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Um, it would be good if it was something like:

class (Idiom f) => Monad f where
  fmap f m = m >>= return . f -- or ap . return ?
  ap mf mv = mf >>= \f -> mv >>= \v -> return $ f v
  (>>=) :: f a -> (a -> f b) -> f b

Or am I missing the point?

Serhei 15:24, 29 January 2006 (UTC)

You can't put defaults for one class in another. Though that could be another proposal. —Ashley Y 21:02, 29 January 2006 (UTC)
Wasn't this part of John Meacham's class system proposal? What happend to this? -- Wolfgang Jeltsch 19:25, 2 February 2006 (UTC)

<*> should really be merged with ap, right ? (Btw, why such a symmetric operator symbol as <*> ? <* or some other assymetric one would be better .. even plain `ap` is not so bad, imho.)

Also, it would be nice to change sequence, sequence_, mapM and mapM_ to only require Applicative instead of Monad. (Or one could merge these four into something like Data.FunctorM.FunctorM, which should use Applicative anyway.) -- StefanLjungstrand 10:18, 3 November 2006 (UTC)

I think it makes sense to take return out of Applicative. Either into a separate step between Functor and Applicative, or into a new class altogether:

class Boxable f where
     return :: a -> f a
class (Functor f, Boxable f) => Applicative f where

But maybe this is just overengineering.

Twanvl 21:46, 15 January 2007 (UTC)