[Haskell-beginners] Re: Maybe, Either

Yusaku Hashimoto nonowarn at gmail.com
Fri Sep 18 21:04:35 EDT 2009


On Fri, Sep 18, 2009 at 6:05 PM, Heinrich Apfelmus
<apfelmus at quantentunnel.de> wrote:
> Yusaku Hashimoto wrote:
>> - use Maybe as usual, we should use adapters as we need
>>
>> Conor, You have said this many times elsewhere, but unfortunately, I
>> heard it for the first time =) so please correct me if I'm wrong.
>>
>> I thought generalizing lookup is good example for usage of the
>> MonadPlus as I read in RWH[1], but you said it's not necessary.
>>
>> Now, I understood there are two positions for such classes. One is
>> using generalizing for it, another is not.
>>
>> So, I want to know that when such classes should be used from later position.
>>
>> Heinrich suggested that is for overloading.
>
> To elaborate on generality versus overloading: the function
>
>     lookupM :: MonadPlus m => k -> Map k a -> m a
>
> is not more general than
>
>     lookup :: k -> Map k a -> Maybe a
>
> because you can implement the former with the latter
>
>     lookupM k = mop . lookup k
>
>     mop = maybe mzero return
>
> In other words,  lookupM  doesn't introduce new functionality.
>
> Rather, it gives you the syntactic convenience of not having to mention
>  mop  by overloading the result type. In other words, you can write
>
>     lookup  = lookupM
>
> or
>
>     lookupE :: k -> Map k a -> Either e a
>     lookupE = lookupM

I got it. Thank you for explanation.

>> But do any other usages are exist?
>
> I'm not quite sure I understand what you mean here?

I had misread the Conor's post like the raison d'etre of type classes
was denied, so I asked how type class should be used. Thanks again.

Cheers
-nwn


More information about the Beginners mailing list