1. I don't understand this:
(hash-table-set!
hash-table ( key value ) ...)
In particular, I don't understand the inner parentheses. Is this a macro?
2. What's the reasoning for having some procedures take multiple keys as separate arguments and others take them together as a list?
(hash-table-set-entries!
hash-table keys-list values-list)
(hash-table-delete!
hash-table key ...)
(hash-table-delete-keys!
hash-table keys-list)
The former doesn't seem useful, and having both makes the API confusing.
3. In this description:
(hash-table-extend!/default
hash-table key default)
"Effectively invokes hash-table-ref/default
with the given arguments and returns what it returns. If key was not found in hash-table, its association is set to the result being returned. Must execute in expected amortized constant time."
Doesn't it set the association's value to default in that case?
Similarly for:
(hash-table-replace!
hash-table key [ failure [ success ] ])
and:
(hash-table-replace!/default
hash-table key default)
4. The word "hash-table" appears immediately above the section header "Copying and conversion," apparently by accident.