Proposal: add ifM and whenM to Control.Monad
Mario Pastorelli
pastorelli.mario at gmail.com
Mon Apr 21 12:42:56 UTC 2014
Thank you.
So bool takes the predicate as last argument, good for combining it with
a monadic operation:
doesDirectoryExists path >>=
bool (putStrLn ("Creating dir " ++ path) >> createDirectory path)
(putStrLn ("Directory already exists"))
I still prefer the version using mif/ifM, in particular when working
with IO:
ifM (doesDirectoryExists path)
(putStrLn ("Directory already exists"))
(putStrLn ("Creating dir " ++ path) >> createDirectory path)
On 04/21/2014 02:16 PM, Edward Kmett wrote:
> http://hackage.haskell.org/package/base-4.7.0.0/docs/src/Data-Bool.html#bool
>
>
> On Mon, Apr 21, 2014 at 5:35 AM, Mario Pastorelli
> <pastorelli.mario at gmail.com <mailto: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 are like me, they probably were
> ignoring the naming convention and used the most intuitive name.
> Once you know forM then it's obvious that you append 'M' to
> functions that "are more monadic". Probably mif, mwhen and munless
> are more compatible with the API rules.
>
>
>
> In general, I'm not sure about ifM (as it does not line up
> with `bool`).
>
>
> This is the second time that I read about `bool` but I can't find
> it. Can somebody provide a link to it? mbool can be a solution,
> but not as intuitive as mif.
>
> Mario
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140421/1c04f5a3/attachment.html>
More information about the Libraries
mailing list