
Duncan Coutts
On Sat, 2009-08-22 at 10:18 +0200, Joachim Breitner wrote:
Hi,
I propose the attached change
Fri Aug 21 19:17:12 CEST 2009 Joachim Breitner
* Add justIf to Data.Maybe
As Jón was suggesting we might want to generalise to MonadPlus rather than putting it in Data.Maybe, it becomes rather similar to the existing function 'guard':
[...] some alpha conversion
checkA :: MonadPlus m => Bool -> a -> m a checkA True x = return x checkA False _ = mzero
Using a Bool for the condition is a tad more general than a predicate like:
checkB :: MonadPlus m => (a -> Bool) -> a -> m a
I'd say the generality comparison goes the other way:
In particular, the use case in Cabal does not fit the predicate pattern because the condition is not a condition on the value being returned but on something else in the environment.
But you can write any checkA e as checkB $ const e whereas a function like all_spaces = checkB (all . isSpace) is hard to write using checkA (suppose you are doing something like “map (checkB predicate)”) since checkA doesn't look at the second argument.
BTW, I also don't want to take too strong a position on the name ;-)
me neither, but check (all . isOK) reads nicely ;-) -- Jón Fairbairn Jon.Fairbairn@cl.cam.ac.uk http://www.chaos.org.uk/~jf/Stuff-I-dont-want.html (updated 2009-01-31)