whenJust vs. forM_ (Was: Add isLeft/isRight to Data.Either)

Henning Thielemann lemming at henning-thielemann.de
Sat Dec 8 15:53:42 CET 2012

On Fri, 7 Dec 2012, Thomas Schilling wrote:

> On 7 December 2012 09:25, Erik Hesselink <hesselink at gmail.com> wrote:
>> There is no need to define whenJust, since it is just a specialization
>> of forM_ from Data.Foldable.
> I don't know if that's such a good argument.  I prefer my code
> readable -- too much abstraction can have a seriously bad effect on
> that.  As a simple rule, if the user has to do type inference in their
> head, readability suffers.
> In this case, "forM_" implies we're iterating over something container
> like, "whenJust" means "I want to do something if this thing yielded a
> result". It depends on the context whether a "Maybe" is behaving more
> container-like or is indicating the presence of a result where there
> may not have been one.

Too much abstraction can certainly reduce readability. In this case I 
interpret Maybe as a list that can contain at most one element. This way I 
can use all the nice functions from Data.Foldable for Maybe.

More information about the Libraries mailing list