1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-23 12:00:21 +02:00

Add procedures to convert alists into hash tables.

* module/ice-9/hash-table.scm: New module.

* test-suite/tests/hash.test ("alist conversion"): Add tests.

* doc/ref/api-compound.texi (Hash Table Reference): Add docs.
This commit is contained in:
David Thompson 2013-10-19 22:43:37 -04:00 committed by Mark H Weaver
parent 02500d4477
commit 5063f0a93b
4 changed files with 104 additions and 1 deletions

View file

@ -18,7 +18,8 @@
(define-module (test-suite test-numbers)
#:use-module (test-suite lib)
#:use-module (ice-9 documentation))
#:use-module (ice-9 documentation)
#:use-module (ice-9 hash-table))
;;;
;;; hash
@ -80,6 +81,41 @@
(lambda ()
(write (make-hash-table 100)))))))
;;;
;;; alist->hash-table
;;;
(with-test-prefix
"alist conversion"
(pass-if "alist->hash-table"
(let ((table (alist->hash-table '(("foo" . 1)
("bar" . 2)
("foo" . 3)))))
(and (= (hash-ref table "foo") 1)
(= (hash-ref table "bar") 2))))
(pass-if "alist->hashq-table"
(let ((table (alist->hashq-table '((foo . 1)
(bar . 2)
(foo . 3)))))
(and (= (hashq-ref table 'foo) 1)
(= (hashq-ref table 'bar) 2))))
(pass-if "alist->hashv-table"
(let ((table (alist->hashv-table '((1 . 1)
(2 . 2)
(1 . 3)))))
(and (= (hashv-ref table 1) 1)
(= (hashv-ref table 2) 2))))
(pass-if "alist->hashx-table"
(let ((table (alist->hashx-table hash assoc '((foo . 1)
(bar . 2)
(foo . 3)))))
(and (= (hashx-ref hash assoc table 'foo) 1)
(= (hashx-ref hash assoc table 'bar) 2)))))
;;;
;;; usual set and reference
;;;