Next: Octet-addressed binary blocks, Previous: Octet vectors, Up: Library modules - SRFIs [Contents][Index]
srfi-69
- Basic hash tablesThis module has been superseded by R7RS scheme.hash-table
(see R7RS hash tables). New code should use it instead.
This is a thin adaptor on Gauche’s built-in hashtables
(see Hashtables). This is provided for the compatibility
to the portable libraries; the hashtable object created by
this module’s make-hash-table
is the same as the one
created by Gauche’s built-in, and you can pass the table to
both APIs.
Here’s a summary of difference between srfi-69 and Gauche’s built-in hash table API:
make-hash-table
, as well as alist->hash-table
,
takes equality predicate and hash function, instead of a single
comparator argument as Gauche does.
srfi-69
’s make-hash-table
takes two arguments, an object to calculate a hash value,
and a positive integer that limits the range of the hash value.
Srfi-69
’s primary hash table accessor is hash-table-ref
,
which takes a thunk to be called when the table doesn’t have an
entry for the given key, while Gauche’s hash-table-get
takes
a fallback value for that.
Srfi-69
also has hash-table-ref/default
,
which takes a fallback value like Gauche’s hash-table-get
,
but the default value can’t be omitted.
srfi-69
is called hash-table-walk
,
which is Gauche’s hash-table-for-each
. The srfi name is chosen
to avoid conflict with existing Scheme implementations.
The following procedures are the same as Gauche’s built-in ones. See Hashtables, for the details.
hash-table? hash-table-delete! hash-table-exists? hash-table-keys hash-table-values hash-table-fold hash-table->alist hash-table-copy
[SRFI-69] {srfi-69} Creates a new hashtable and returns it. This is the same name as Gauche’s built-in procedure, but the arguments are different.
The eq-pred argument is an equality predicate; it takes
two arguments and returns #t
if two are the same,
and #f
if not. When omitted, equal?
is used.
The hash-proc argument is a hash function.
It takes two arguments: an object to hash, and a positive
integer to limit the range of the hash value. (Note that
Gauche’s native hash functions takes only one argument.)
When omitted, Gauche tries to choose appropriate hash function
if eq-pred
is known one (eq?
, eqv?
,
equal?
, string=?
or string-ci=?
).
Otherwise we use Gauche’s hash
procedure, but there’s
no guarantee that it works appropriately; you should give
suitable hash-proc if you pass custom eq-pred.
The returned hash table is an instance of Gauche’s native hash table. You can pass it to Gauche’s builtin procedures.
Srfi-69
allows implementation-specific arguments args to be
passed to make-hash-table
. At this moment, Gauche
ignores them.
[SRFI-69]
{srfi-69}
Like Gauche’s builtin alist->hash-table
, but takes
eq-pred and hash-fn separately,
instead of a single comparator.
The alist argument is a list of pairs. The car of each pair is used for a key, and the cdr for its value.
See make-hash-table
above for the description of
eq-pred, hash-fn and args.
[SRFI-69] {srfi-69} Returns equivalence function and hash function of the hashtable ht.
Note that srfi-69
’s hash-table-hash-function
differs from
scheme.hash-table
’s one of the same name (see R7RS hash tables).
This one returns a hash function that takes an optional bound argument
to limit the range of the hash value. Since our underlying hash tables
don’t use bound argument, we actually wrap the internal hash function
to allow the optional bound argument.
Hence the function returned by hash-table-hash-function
is not
be eq?
to the one you gave to make-hash-table
.
[SRFI-69] {srfi-69} Looks up the value corresponding to key in a hash table ht. If there’s no entry for key, thunk is called without arguments. The default of thunk is to signal an error.
[SRFI-69]
{srfi-69}
Looks up the value corresponding to key in a hash table ht.
This is like Gauche’s hash-table-get
, but default can’t be
omitted.
[SRFI-69]
{srfi-69}
This is the same as Gauche’s hash-table-put!
.
[SRFI-69] {srfi-69}
[SRFI-69]
{srfi-69}
Returns the number of entries in a hash table ht. The same as Gauche’s
hash-table-num-entries
.
[SRFI-69]
{srfi-69}
For each entry in a hash table ht,
calls proc with two arguments, a key and its value.
It’s the same as Gauche’s hash-table-for-each
.
[SRFI-69] {srfi-69} Add all entries in a hash table ht2 into a hash table ht1, and returns ht1.
[SRFI-69]
{srfi-69}
Like Gauche’s hash
, except this one can take bound argument;
if provided, it must be a positive integer, and the return value
is limited between 0 and (- bound 1)
, inclusive.
[SRFI-69]
{srfi-69}
These are like srfi-13
’s (see String library), except
these don’t take start and end argument.
[SRFI-69]
{srfi-69}
This is Gauche’s eq-hash
, except this one can take bound argument.
Next: Octet-addressed binary blocks, Previous: Octet vectors, Up: Library modules - SRFIs [Contents][Index]