
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 21.12.2014 11:54, Nikita Volkov wrote:> I propose to add the following utility function into Control.Applicative:
cond :: (Alternative f) => (a -> Bool) -> a -> f a cond p a = if p a then pure a else empty
This reminds me of the commonly recommended, but wacky looking function pureWhen :: MonadPlus m => Bool -> a -> m a pureWhen = \p x -> x <$ guard p which is (pure x) when p holds, and mzero otherwise. This is of course easily generalizable to using Alternative. Using your `cond`, one could express this as pureWhen p = cond (const p) which looks reasonable to me. I think this is an often used function in one form or another, and would welcome it in the libraries. +1 Greetings, David/quchen -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJUltluAAoJELrQsaT5WQUsKdEIAOMkOnFv2w2fe3snUYq9tFRe xwWajQjxyowfNwFR4wdv1Z0PjDz1p8vM7EGGJ0cr6KtsxK4YsvOoylJwAMcIjUhQ fzrdgYo+NodQaDO1BmUYrLW/UBZjKBgSxiz7XhRW4uA6mRc9Cvy6ljoMbixAXoPv NG0jfLEduQf10Ro5tv+Glbdsbu7N0QDfo95y88c6cDFSAeYLECIEKxzNojrd89W+ 8LQFRiDLo4U9EZVB839LCBiDT/ZCGNEdxIsMk5I/viR8kiKezlYLod6dp1gqK3jg 9KkaENxVzWkimoza3BhSf23OwICliFxJRv3wqEv2ZiweBUjN9xrNZ4d9euaSmtI= =x54F -----END PGP SIGNATURE-----