chickadee » srfi-69

Outdated CHICKEN release

This is a manual page for an old and unsupported version of CHICKEN. If you are still using it, please consider migrating to the latest version. You can find the manual for the latest release here.

Unit srfi-69

CHICKEN implements SRFI 69 with SRFI 90 extensions. For more information, see SRFI-69 and SRFI-90.

Hash Table Procedures

make-hash-table

(make-hash-table [TEST HASH SIZE] [#:test TEST] [#:hash HASH] [#:size SIZE] [#:initial INITIAL] [#:min-load MIN-LOAD] [#:max-load MAX-LOAD] [#:weak-keys WEAK-KEYS] [#:weak-values WEAK-VALUES])procedure

Returns a new HASH-TABLE with the supplied configuration.

TEST
The equivalence function.
HASH
The hash function.
SIZE
The expected number of table elements.
INITIAL
The default initial value.
MIN-LOAD
The minimum load factor. A flonum in (0.0 1.0).
MAX-LOAD
The maximum load factor. A flonum in (0.0 1.0).
WEAK-KEYS
Use weak references for keys. (Ignored)
WEAK-VALUES
Use weak references for values. (Ignored)

Please note that hash tables are not guaranteed to compare equal? to each other, even if they contain exactly the same key/value pairs.

alist->hash-table

(alist->hash-table A-LIST [#:test TEST] [#:hash HASH] [#:size SIZE] [#:initial INITIAL] [#:min-load MIN-LOAD] [#:max-load MAX-LOAD] [#:weak-keys WEAK-KEYS] [#:weak-values WEAK-VALUES])procedure

Returns a new HASH-TABLE. The HASH-TABLE is populated from the A-LIST. The keyword arguments are per make-hash-table.

If a key occurs multiple times in A-LIST, the first occurrence will be used in the hash table.

hash-table?

hash-table? OBJECTprocedure

Is the OBJECT a hash-table?

hash-table-size

hash-table-size HASH-TABLEprocedure

Returns the number of associations in HASH-TABLE.

hash-table-equivalence-function

hash-table-equivalence-function HASH-TABLEprocedure

The HASH-TABLE equivalence-function.

hash-table-hash-function

hash-table-hash-function HASH-TABLEprocedure

The HASH-TABLE hash-function.

hash-table-min-load

hash-table-min-load HASH-TABLEprocedure

The HASH-TABLE minimum load factor.

hash-table-max-load

hash-table-max-load HASH-TABLEprocedure

The HASH-TABLE maximum load factor.

hash-table-weak-keys

hash-table-weak-keys HASH-TABLEprocedure

Does the HASH-TABLE use weak references for keys?

hash-table-weak-values

hash-table-weak-values HASH-TABLEprocedure

Does the HASH-TABLE use weak references for values?

hash-table-has-initial?

hash-table-has-initial? HASH-TABLEprocedure

Does the HASH-TABLE have a default initial value?

hash-table-initial

hash-table-initial HASH-TABLEprocedure

The HASH-TABLE default initial value.

hash-table-keys

hash-table-keys HASH-TABLEprocedure

Returns a list of the keys in the HASH-TABLE population.

hash-table-values

hash-table-values HASH-TABLEprocedure

Returns a list of the values in the HASH-TABLE population.

hash-table->alist

hash-table->alist HASH-TABLEprocedure

Returns the population of the HASH-TABLE as an a-list.

hash-table-ref

hash-table-ref HASH-TABLE KEYprocedure

Returns the VALUE for the KEY in the HASH-TABLE.

Aborts with an exception when the KEY is missing.

hash-table-ref/default

hash-table-ref/default HASH-TABLE KEY DEFAULTprocedure

Returns the VALUE for the KEY in the HASH-TABLE, or the DEFAULT when the KEY is missing.

hash-table-exists?

hash-table-exists? HASH-TABLE KEYprocedure

Does the KEY exist in the HASH-TABLE?

hash-table-set!

hash-table-set! HASH-TABLE KEY VALUEprocedure

Set the VALUE for the KEY in the HASH-TABLE.

A setter for hash-table-ref is defined, so

(set! (hash-table-ref HASH-TABLE KEY) VALUE)

is equivalent to

(hash-table-set! HASH-TABLE KEY VALUE)

hash-table-update!

hash-table-update! HASH-TABLE KEY #!optional UPDATE-FUNCTION DEFAULT-VALUE-FUNCTIONprocedure

Sets or replaces the VALUE for KEY in the HASH-TABLE.

The UPDATE-FUNCTION takes the existing VALUE for KEY and returns the new VALUE. The default is identity

The DEFAULT-VALUE-FUNCTION is called when the entry for KEY is missing. The default uses the (hash-table-initial-value), if provided. Otherwise aborts with an exception.

Returns the new VALUE.

hash-table-update!/default

hash-table-update!/default HASH-TABLE KEY UPDATE-FUNCTION DEFAULT-VALUEprocedure

Sets or replaces the VALUE for KEY in the HASH-TABLE.

The UPDATE-FUNCTION takes the existing VALUE for KEY and returns the new VALUE.

The DEFAULT-VALUE is used when the entry for KEY is missing.

Returns the new VALUE.

hash-table-copy

hash-table-copy HASH-TABLEprocedure

Returns a shallow copy of the HASH-TABLE.

hash-table-delete!

hash-table-delete! HASH-TABLE KEYprocedure

Deletes the entry for KEY in the HASH-TABLE.

hash-table-remove!

hash-table-remove! HASH-TABLE PROCprocedure

Calls PROC for all entries in HASH-TABLE with the key and value of each entry. If PROC returns true, then that entry is removed.

hash-table-clear!

hash-table-clear! HASH-TABLEprocedure

Deletes all entries in HASH-TABLE.

hash-table-merge

hash-table-merge HASH-TABLE-1 HASH-TABLE-2procedure

Returns a new HASH-TABLE with the union of HASH-TABLE-1 and HASH-TABLE-2. Keys that exist in both tables will be taken from HASH-TABLE-1.

hash-table-merge!

hash-table-merge! HASH-TABLE-1 HASH-TABLE-2procedure

Returns HASH-TABLE-1 as the union of HASH-TABLE-1 and HASH-TABLE-2. Keys that exist in both tables will be taken from HASH-TABLE-1.

hash-table-map

hash-table-map HASH-TABLE FUNCprocedure

Calls FUNC for all entries in HASH-TABLE with the key and value of each entry.

Returns a list of the results of each call.

hash-table-fold

hash-table-fold HASH-TABLE FUNC INITprocedure

Calls FUNC for all entries in HASH-TABLE with the key and value of each entry, and the current folded value. The initial folded value is INIT.

Returns the final folded value.

hash-table-for-each

hash-table-for-each HASH-TABLE PROCprocedure

Calls PROC for all entries in HASH-TABLE with the key and value of each entry.

hash-table-walk

hash-table-walk HASH-TABLE PROCprocedure

Calls PROC for all entries in HASH-TABLE with the key and value of each entry.

Hashing Functions

All hash functions return a fixnum in the range [0 BOUND).

When given the fixnum RANDOMIZATION, these functions will use this to perturb the value; if not specified, the value will differ for each invocation of your program. This is for security reasons; an attacker who knows what a value hashes to can deliberately try to cause collisions, thereby flattening your hash table, effectively reducing it to a list. Always make sure you don't expose any hashed value to an attacker.

number-hash

(number-hash NUMBER [BOUND RANDOMIZATION])procedure

For use with = as a hash-table-equivalence-function.

object-uid-hash

(object-uid-hash OBJECT [BOUND RANDOMIZATION])procedure

Currently a synonym for equal?-hash.

symbol-hash

(symbol-hash SYMBOL [BOUND RANDOMIZATION])procedure

For use with eq? as a hash-table-equivalence-function.

keyword-hash

(keyword-hash KEYWORD [BOUND RANDOMIZATION])procedure

For use with eq? as a hash-table-equivalence-function.

string-hash

(string-hash STRING [BOUND START END RANDOMIZATION])procedure

For use with string=? as a hash-table-equivalence-function. The optional START and END arguments may be given to limit the hash calculation to a specific sub-section of STRING.

string-ci-hash

(string-hash-ci STRING [BOUND START END RANDOMIZATION])procedure
(string-ci-hash STRING [BOUND START END RANDOMIZATION])procedure

For use with string-ci=? as a hash-table-equivalence-function.

eq?-hash

(eq?-hash OBJECT [BOUND RANDOMIZATION])procedure

For use with eq? as a hash-table-equivalence-function.

eqv?-hash

(eqv?-hash OBJECT [BOUND RANDOMIZATION])procedure

For use with eqv? as a hash-table-equivalence-function.

equal?-hash

(equal?-hash OBJECT [BOUND RANDOMIZATION])procedure

For use with equal? as a hash-table-equivalence-function.

hash

(hash OBJECT [BOUND RANDOMIZATION])procedure

Synonym for equal?-hash.

hash-by-identity

(hash-by-identity OBJECT [BOUND RANDOMIZATION])procedure

Synonym for eq?-hash.

recursive-hash-max-depth

recursive-hash-max-depthparameter

The maximum structure depth to follow when computing a hash value. The default is 4.

recursive-hash-max-length

recursive-hash-max-lengthparameter

The maximum vector length to follow when computing a hash value. The default is 4.

Previous: Unit srfi-18 Next: Unit posix

Contents »