1 Language Model
2 Syntactic Forms
3 Datatypes
4 Structures
5 Classes and Objects
6 Units
7 Contracts
8 Pattern Matching
9 Control Flow
10 Concurrency
11 Macros
12 Input and Output
13 Reflection and Security
14 Operating System
15 Memory Management
16 Running PLT Scheme
On this page:
prop: equal+ hash
3.1.1 Boolean Synonyms
Version: 4.0


3.1 Booleans and Equality

True and false are represented by the values #t and #f, respectively, though operations that depend a boolean value typically treat anything other than #f as true.

See also: and, or, andmap, ormap.

(boolean? v)  boolean?

  v : any/c

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

(not v)  boolean?

  v : any/c

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

(equal? v1 v2)  boolean?

  v1 : any/c

  v2 : any/c

Two values are equal? if and only if they are eqv?, unless otherwise specified for a particular datatype.

Datatypes with further specification of equal? include strings, byte strings, numbers, pairs, mutable pairs, vectors, hash tables, and inspectable structures. In the last five cases, equality is recursively defined; if both v1 and v2 contain reference cycles, they are equal when the infinite unfoldings of the values would be equal. See also prop:equal+hash.

(eqv? v1 v2)  boolean?

  v1 : any/c

  v2 : any/c

Two values are eqv? if and only if they are eq?, unless otherwise specified for a particular datatype.

The number and character datatypes are the only ones for which eqv? differs from eq?.

(eq? v1 v2)  boolean?

  v1 : any/c

  v2 : any/c

Return #t if v1 and v2 refer to the same object, #f otherwise. See also Object Identity and Comparisons.

(immutable? v)  boolean?

  v : any/c

Returns #t if v is an immutable string, byte string, vector, hash table, or box, #f otherwise.

prop:equal+hash : struct-type-property?

A structure type property (see Structure Type Properties) that supplies an equality predicate and hashing functions for a structure type. The property value must be a list of three procedures:

Take care to ensure that hash-proc and hash2-proc are consistent with equal-proc. Specifically, hash-proc and hash2-proc should produce the same value for any two structures for which equal-proc produces a true value.

When a structure type has no prop:equal+hash property, then transparent structures (i.e., structures with an inspector that is controlled by the current inspector) are equal? when they are instances of the same structure type (not counting sub-types), and when they have equal? field values. For transparent structures, equal-hash-code and equal-secondary-hash-code derive hash code using the field values. For opaque structure types, equal? is the same as eq?, and equal-hash-code and equal-secondary-hash-code results are based only on eq-hash-code.

3.1.1 Boolean Synonyms

 (require scheme/bool)

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

true : boolean?

A synonym for #t.

false : boolean?

A synonym for #f.

(symbol=? a b)  boolean?

  a : symbol?

  b : symbol?

Returns (equal? a b).

(boolean=? a b)  boolean?

  a : boolean?

  b : boolean?

Returns (equal? a b).

(false? v)  boolean?

  v : any/c

Returns (not v).