Data.Bool

Description

The `Bool` type and related functions.

Booleans

data Bool :: * Source

Constructors

 False True

Instances

 Bounded Bool Enum Bool Eq Bool Data Bool Ord Bool Read Bool Show Bool Ix Bool Generic Bool FiniteBits Bool Bits Bool Storable Bool type Rep Bool type (==) Bool a b

Operations

(&&) :: Bool -> Bool -> Bool infixr 3 Source

Boolean "and"

(||) :: Bool -> Bool -> Bool infixr 2 Source

Boolean "or"

Boolean "not"

`otherwise` is defined as the value `True`. It helps to make guards more readable. eg.

``` f x | x < 0     = ...
| otherwise = ...```

bool :: a -> a -> Bool -> a Source

Case analysis for the `Bool` type. `bool x y p` evaluates to `x` when `p` is `False`, and evaluates to `y` when `p` is `True`.

This is equivalent to `if p then y else x`; that is, one can think of it as an if-then-else construct with its arguments reordered.

Examples

Basic usage:

````>>> ````bool "foo" "bar" True
```"bar"
`>>> ````bool "foo" "bar" False
```"foo"
```

Confirm that `bool x y p` and `if p then y else x` are equivalent:

````>>> ````let p = True; x = "bar"; y = "foo"
````>>> ````bool x y p == if p then y else x
```True
`>>> ````let p = False
````>>> ````bool x y p == if p then y else x
```True
```

Since: 4.7.0.0

© The University of Glasgow and others