Scheme provides a special unique object, whose written
#f, called false. This object counts as
false if it's the result of a condition expression in an
cond) expression. In most Schemes, this is the only
value that counts as false, and all others count as true.
The false object is not the same thing as the integer zero (as it is in C), and it's not the same thing as a null pointer (as it is in Lisp). The false object is a unique object.
For convenience and clarity, Scheme also provides another boolean
#t, which can be used as a true value. Note that
in general, any value other than false is true, but the special boolean
#t is a good one to use when all you want to say is that
something is true--returning the true boolean makes it clear that all
you're returning is a true value, not some other value that conveys more
Like other objects, Booleans are conceptually objects on the heap,
and when you write
#f, it means "a pointer to the
canonical true object" or "a pointer to the false object."
Scheme provides a few procedures and special forms for operation on
booleans. The procedure
not acts as a
and always returns true or false (
#f). If applied
#f, it returns
#t. Since all other values count as
not to anything else returns