[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