
2010/9/7 Gábor Lehel
*That said*, I actually have nothing at all against splitting the 'a -> f a' method out into a separate class if you think it's useful, whether you call it Pointed or something else. (And `class (Pointed f, Functor f) => PointedFunctor f` is sort of cute.)
It might be cute, but until we get class aliases [1] this results in yet another class to make your data type an instance of, and what's more it's one that doesnt' even give you anything. I think it makes much more sense to have Functor, Pointed and "(Functor f, Pointed f) => Applicative f" rather than a useless intermediary class. If, however, we could get class aliases _for free_ (i.e. something like "class alias PointedFunctor f = (Functor f, Pointed f)" for which all instances of Functor and Pointed are automatically instanced of PointedFunctor), then I can see that as being something nice to have. [1]: http://www.haskell.org/haskellwiki/Context_alias -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com