On 8/13/06, Lennart Augustsson <[EMAIL PROTECTED]> wrote:
If I remember right, Functor was a superclass of Monad in Haskell early on, but it was taken away. I think this was the wrong decision, but I seem to remember that the rationale was that it would be too onerous to require programmers to write a Functor instance every time they want a Monad instance. Bah!
There was a proposal (Re: [Haskell] A collection of related proposals regarding monads) to allow instance definitions to be combined, allowing a more fine-grained hierarchy (Functor, PointedFunctor, Applicative, Monad) without changing the instance definition requirements. In my opinion, an instance definition of a subclass should allow the superclass's methods to be defined as if they were part of the subclass, e.g.: instance Monad [] where fmap = map return x = [x] join = concat It's so pretty! (But a little inefficient. You'd probably want to define ap/lift2 in there.) -- Taral <[EMAIL PROTECTED]> "You can't prove anything." -- Gödel's Incompetence Theorem _______________________________________________ Haskell-prime mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-prime
