(module hashed-table mzscheme
(require "../private/require.ss")
(require-contracts)
(require "../private/binding.ss"
"table-interface.ss"
"table-from-set.ss"
"../set/hashed-set.ss")
(provide/contract
[hashed-table% (implementation?/c table<%>)]
[make-hashed-table
(([hash hash-fn/c]
[equ? equality/c]
[keys (listof any/c)]
[values (listof any/c)])
. ->r . table/c)])
(define hashed-table% table-from-set%)
(define (make-hashed-table hash equ? keys values)
(make-table-from-set
(make-hashed-set (binding-lift hash)
(binding-lift equ?)
(map make-binding keys values))))
)