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.