A * predicate* is a function that performs a test and
returns either ` #t` (true) or ` #f` (false). Other dialects
of Lisp use ` t` for true and ` nil` for false.

Note: Lisp functions that test predicate values, such as ` if`,
consider ` #f` to be false and * anything else* to be true.

In Scheme, predicate names conventionally end in ` ?`.
In other dialects of Lisp, predicate names often end in ` p`,
e.g. ` numberp`.
Some commonly used predicates are:

(= x y ) | (zero? x )
| (number? x ) |

(<= x y ) | (positive? x )
| (integer? x ) |

(< x y ) | (negative? x )
| (rational? x ) |

(>= x y ) | (odd? x )
| (real? x ) |

(> x y ) | (even? x )
| (complex? x ) |

(exact? x )
| (inexact? x ) | |

(boolean? x )
| (symbol? x ) | |

(string? x )
| (vector? x ) | |

(char? x )
| (pair? x ) | |