Proposal: Data.Bool.implies

Niklas Hambüchen mail at
Mon Jan 18 02:17:44 UTC 2016

I propose to add to Data.Bool:

    -- | Boolean implication.
    implies :: Bool -> Bool -> Bool
    implies True  x = x
    implies False _ = True

    infix 4 `implies` -- same as (==)

The request for this is quite old (see e.g.

I believe that by not trying to use an operator for it, and keeping it
in Data.Bool, we can avoid doing anything wrong.

A quick superficial search on Stackage Hoogle suggests that adding this
function should create no breakage (4 packages define their own function
called `implies`, none of them import Data.Bool).

`infix` instead of `infixl` or `infixr` to force you to bracket it; for
the same reason it has the same precedence as `==`.

More information about the Libraries mailing list