Proposal: add ifM and whenM to Control.Monad

Casey McCann cam at uptoisomorphism.net
Mon Apr 21 14:22:28 UTC 2014


On Mon, Apr 21, 2014 at 8:55 AM, Brandon Allbery <allbery.b at gmail.com> wrote:
> On Mon, Apr 21, 2014 at 5:35 AM, Mario Pastorelli
> <pastorelli.mario at gmail.com> wrote:
>>
>> On 04/21/2014 10:41 AM, Simon Hengel wrote:
>>>>
>>>> A quick heuristic grep over all Hackage packages results in quite a bit
>>>> of packages containing the ifM/whenM/unlessM:
>>>
>>> But that kind of shows that the "expected" names for those functions are
>>> ifM/whenM/unlessM.  I would ask the question:
>>>
>>>      Are there any other useful combinators that would be named
>>>      ifM/whenM/unlessM under the current naming convention?
>>>
>>> If no, then I'm not entirely convinced that we should decide against
>>> what seems to be common intuition here.
>>
>>
>> Breaking API consistency because a lot of people are already doing it
>> doesn't feel right. If they
>
>
> The API is there to serve its users, not really to dictate to them. If the
> common convention is counter to the API structure, perhaps it is the API
> that should change.

Has anyone noticed yet that replicateM is already breaking the
ostensibly established naming scheme, and should properly be named
mreplicate? Also, sequenceA is clearly echoing the fooM convention but
it breaks the pattern even worse.

But perhaps we should in fact rename replicateM. Certainly
"mreplicate" would fit in better with other monadic variants of list
functions, like "mconcat"! Consistency is important, after all.

Also, mfix should probably be fixM, for what that's worth.

- C.


More information about the Libraries mailing list