(guile.info.gz) Hash Table Examples
Info Catalog
(guile.info.gz) Hash Tables
(guile.info.gz) Hash Table Reference
22.7.3.1 Hash Table Examples
............................
For demonstration purposes, this section gives a few usage examples of
some hash table procedures, together with some explanation what they do.
First we start by creating a new hash table with 31 slots, and
populate it with two key/value pairs.
(define h (make-hash-table 31))
(hashq-create-handle! h 'foo "bar")
=>
(foo . "bar")
(hashq-create-handle! h 'braz "zonk")
=>
(braz . "zonk")
(hashq-create-handle! h 'frob #f)
=>
(frob . #f)
You can get the value for a given key with the procedure
`hashq-ref', but the problem with this procedure is that you cannot
reliably determine whether a key does exists in the table. The reason
is that the procedure returns `#f' if the key is not in the table, but
it will return the same value if the key is in the table and just
happens to have the value `#f', as you can see in the following
examples.
(hashq-ref h 'foo)
=>
"bar"
(hashq-ref h 'frob)
=>
#f
(hashq-ref h 'not-there)
=>
#f
Better is to use the procedure `hashq-get-handle', which makes a
distinction between the two cases. Just like `assq', this procedure
returns a key/value-pair on success, and `#f' if the key is not found.
(hashq-get-handle h 'foo)
=>
(foo . "bar")
(hashq-get-handle h 'not-there)
=>
#f
There is no procedure for calculating the number of key/value-pairs
in a hash table, but `hash-fold' can be used for doing exactly that.
(hash-fold (lambda (key value seed) (+ 1 seed)) 0 h)
=>
3
Info Catalog
(guile.info.gz) Hash Tables
(guile.info.gz) Hash Table Reference
automatically generated byinfo2html