# Data.Bool

Copyright (c) The University of Glasgow 2001 BSD-style (see the file libraries/base/LICENSE) [email protected] experimental portable Trustworthy Haskell2010

#### 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