[Haskell-cafe] Retrospective type-class extension

Tony Morris tonymorris at gmail.com
Thu May 20 08:16:29 EDT 2010


I've compared and clearly the former is significantly superior :)

I'm rather interested if there are any sound suggestions to resolve the
general issue of retrospective type-class extension.


Miguel Mitrofanov wrote:
> That won't be a great idea; if I just want my monad to be declared as
> one, I would have to write
>
> instance Functor MyMonad where fmap = ...
> instance Pointed MyMonad where pure = ...
> instance Applicative MyMonad where (<*>) = ...
> instance Monad MyMonad where join = ...
>
> Compare this with
>
> instance Monad MyMonad where
>   return = ...
>   (>>=) = ...
>
> and take into account that (>>=) is usually easier to write than join.
>
> Limestraël wrote:
>> Then it would be:
>>
>> class Functor f where
>>     fmap :: (a -> b) -> f a -> f b
>>
>> class (Functor f) => Pointed f where
>>     pure :: a -> f a
>>
>> class (Pointed f) => Applicative f where
>>     (<*>) :: f (a -> b) -> f a -> f b
>>
>> class (Applicative f) => Monad f where
>>     join :: f (f a) -> f a
>>
>> This would be a great idea, for the sake of logic, first (a monad
>> which is not a functor doesn't make sense), and also to eliminate
>> redudancy (fmap = liftM, ap = (<*>), etc.)
>>
>> 2010/5/20 Tony Morris <tonymorris at gmail.com
>> <mailto:tonymorris at gmail.com>>
>>
>>     Ivan Miljenovic wrote:
>>      > On 20 May 2010 14:42, Tony Morris <tonymorris at gmail.com
>>     <mailto:tonymorris at gmail.com>> wrote:
>>      >
>>      >> We all know that "class (Functor f) => Monad f" is preferable
>>     but its
>>      >> absence is a historical mistake. We've all probably tried once:
>>      >>
>>      >> instance (Functor f) => Monad f where
>>      >>
>>      >
>>      > Do you mean the reverse of this (instance (Monad m) => Functor m
>>     where) ?
>>      >
>>     Yes.
>>
>>     --
>>     Tony Morris
>>     http://tmorris.net/
>>
>>
>>     _______________________________________________
>>     Haskell-Cafe mailing list
>>     Haskell-Cafe at haskell.org <mailto:Haskell-Cafe at haskell.org>
>>     http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe


-- 
Tony Morris
http://tmorris.net/




More information about the Haskell-Cafe mailing list