4.2 Booleans (original) (raw)

4.2 Booleans🔗

True and false booleans are represented by the values#t and #f, respectively, though operations that depend on a boolean value typically treat anything other than#f as true. The #t value is always eq? to itself, and #f is always eq? to itself.

See Reading Booleans for information on reading booleans and Printing Booleans for information on printing booleans.

See also and, or, andmap, and ormap.

Returns #t if v is #t or #f,#f otherwise.

Examples:

> (boolean? #f)
#t
> (boolean? #t)
#t
> (boolean? 'true)
#f

Returns #t if v is #f, #f otherwise.

Examples:

> (not #f)
#t
> (not #t)
#f
> (not 'we-have-no-bananas)
#f

Note that immutable? is not a general predicate for immutability (despite its name). It works only for a handful of datatypes for which a single predicate—string?,vector?, etc.—recognizes both mutable and immutable variants of the datatype. In particular, immutable? produces#f for a pair, even though pairs are immutable, sincepair? implies immutability.

See also immutable-string?, mutable-string?, etc.

Examples:

4.2.1 Boolean Aliases🔗

The bindings documented in this section are provided by the racket/bool and racket libraries, but not racket/base.

An alias for #t.

An alias for #f.

Returns (equal? a b) (if a and b are symbols).

(boolean=? a b) → boolean?
a : boolean?
b : boolean?

Returns (equal? a b) (if a and b are booleans).

Returns (not v).

Same as (not (and expr ...)).

Examples:

> (nand #f #t)
#t
> (nand #f (error 'ack "we don't get here"))
#t

Same as (not (or expr ...)).

In the two argument case, returns #t if neither of the arguments is a true value.

Examples:

> (nor #f #t)
#f
> (nor #t (error 'ack "we don't get here"))
#f

Checks to be sure that the first expression implies the second.

Same as (if expr1 expr2 #t).

Examples:

> (implies #f #t)
#t
> (implies #f #f)
#t
> (implies #t #f)
#f
> (implies #f (error 'ack "we don't get here"))
#t

Returns the exclusive or of b1 and b2.

If exactly one of b1 and b2 is not #f, then return it. Otherwise, returns#f.

Examples:

> (xor 11 #f)
11
> (xor #f 22)
22
> (xor 11 22)
#f
> (xor #f #f)
#f
4.2.2 Mutability Predicates🔗

The bindings documented in this section are provided by the racket/mutability and racket libraries, but not racket/base.

Added in version 8.9.0.3 of package base.

Predicates that combine string?, bytes?,vector?, box?, and hash? withimmutable? or its inverse. The predicates are potentially faster than using immutable? and other predicates separately.