# Module Bool

`module Bool: `sig` .. `end``

Boolean values.

• Since 4.08

## Booleans

`type t = `bool` = `
 `|` `false` `|` `true`

The type of booleans (truth values).

The constructors `false` and `true` are included here so that they have paths, but they are not intended to be used in user-defined data types.

`val not : `bool -> bool``

`not b` is the boolean negation of `b`.

`val (&&) : `bool -> bool -> bool``

`e0 && e1` is the lazy boolean conjunction of expressions `e0` and `e1`. If `e0` evaluates to `false`, `e1` is not evaluated. Right-associative operator at precedence level 3/11.

`val (||) : `bool -> bool -> bool``

`e0 || e1` is the lazy boolean disjunction of expressions `e0` and `e1`. If `e0` evaluates to `true`, `e1` is not evaluated. Right-associative operator at precedence level 2/11.

## Predicates and comparisons

`val equal : `bool -> bool -> bool``

`equal b0 b1` is `true` iff `b0` and `b1` are both either `true` or `false`.

`val compare : `bool -> bool -> int``

`compare b0 b1` is a total order on boolean values. `false` is smaller than `true`.

## Converting

`val to_int : `bool -> int``

`to_int b` is `0` if `b` is `false` and `1` if `b` is `true`.

`val to_float : `bool -> float``

`to_float b` is `0.` if `b` is `false` and `1.` if `b` is `true`.

`val to_string : `bool -> string``

`to_string b` is `"true"` if `b` is `true` and `"false"` if `b` is `false`.