# Proposal: Add bool to Data.Bool

Conal Elliott conal at conal.net
Thu Sep 12 00:18:45 CEST 2013

```+1 for bool

+1/2 for cond but with its signature generalized to Applicative:

> cond :: Applicative f => f a -> f a -> f Bool -> f a
> cond = liftA3 bool

-- Conal

On Tue, Sep 10, 2013 at 5:17 PM, Dan Burton <danburton.email at gmail.com>wrote:

> +1 for Data.Bool.bool :: a -> a -> Bool -> a. It doesn't seem very
> important but it does add symmetry with maybe and either, and is mostly
> harmless residing in Data.Bool as long as it is not re-exported by Prelude.
>
> On a tangent... as usual, the Applicative instance of (a ->) comes in
> handy for pointless programming:
>
>     cond = liftA3 bool :: (a -> b) -> (a -> b) -> (a -> Bool) -> a -> b
>
>
> -- Dan Burton
>
>
> On Tue, Sep 10, 2013 at 4:01 PM, Christopher Done <chrisdone at gmail.com>wrote:
>
>> FWIW I've added this to data-extra
>> http://chrisdone.com/data-extra/Data-Bool-Extra.html for the meanwhile.
>>
>>
>> On 11 September 2013 00:02, Oliver Charles <ollie at ocharles.org.uk> wrote:
>>
>>> Hello,
>>>
>>> I would like to propose that the following is added to Data.Bool in base:
>>>
>>> bool :: a -> a -> Bool -> a
>>> bool f _ False = f
>>> bool _ t True  = t
>>>
>>> (Aka, bool f t b = if b then t else f)
>>>
>>> The purpose of this is hopefully evident from its definition. I find
>>> myself reaching for this in cases similar to where I would use 'maybe' -
>>> often when I'm working with 'fmap' and don't want to start introducing
>>> names for the function I am using to map over some functor.
>>>
>>> I suggested this in #haskell and other people also seem frustrated this
>>> doesn't exist, and would like to see it happen - hopefully they will
>>> voice their support as a reply here.
>>>
>>> A quick search on FPComplete's Hoogle [1] shows five equivalent
>>> functions on the first page - and I'm sure there are more on subsequent
>>> pages.
>>>
>>> Thoughts?
>>> - ocharles
>>>
>>> ---
>>> [1]:
>>>
>>> https://www.fpcomplete.com/hoogle?q=Bool+-%3E+a+-%3E+a+-%3E+a&env=ghc-7.4.2-stable-13.09
>>>
>>>
>>> _______________________________________________
>>> Libraries mailing list
>>>
>>>
>>
>> _______________________________________________
>> Libraries mailing list
>>
>>
>
> _______________________________________________
> Libraries mailing list