The `bool' function allows folding over boolean values.
This is comparable to the
maybe' or
either' functions on their respective types.The `bool' function is a replacement for the build-in 'if then else'-syntax. However, since it is a function, it can be partially applied and passed around to higher order functions, like so:
> ghci> :m + Data.Bool.Extras > ghci> let yesOrNo = bool "no" "yes" > ghci> map yesOrNo [True, False, True] > ["yes", "no", "yes"]
Note that the arguments to `bool' are in the opposite order of the 'if then else'-syntax; First the false value, then the true value, and finally the boolean.