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 emptyFollowing is a typical use case:
\x -> fromMaybe 0 $ cond (> 0) $ x - 10which is the same as
\x -> let y = x - 10 in if y > 0 then y else 0Why the first one is better:
The control flow is evident and goes from right to left step by step.
It’s not scattered around like in the second example.No need to interrupt to imagine a name for a temporary variable.
Less noise.
Now, since it’s generalised to
Alternativeone can imagine tons of other useful cases for this.Alternative titles:
conditional
partialBest regards,
Nikita
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries