mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-29 14:30:34 +02:00
Add a record type printer for vlists/vhashes.
* module/ice-9/vlist.scm (<vlist>): Add a record type printer.
This commit is contained in:
parent
c6920dc8ba
commit
a94469c651
1 changed files with 16 additions and 0 deletions
|
@ -19,6 +19,7 @@
|
|||
(define-module (ice-9 vlist)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (srfi srfi-9 gnu)
|
||||
#:use-module (srfi srfi-26)
|
||||
|
||||
#:export (vlist? vlist-cons vlist-head vlist-tail vlist-null?
|
||||
|
@ -148,6 +149,21 @@
|
|||
(base vlist-base)
|
||||
(offset vlist-offset))
|
||||
|
||||
(set-record-type-printer! <vlist>
|
||||
(lambda (vl port)
|
||||
(cond ((vlist-null? vl)
|
||||
(format port "#<vlist ()>"))
|
||||
((block-hash-table (vlist-base vl))
|
||||
(format port "#<vhash ~x ~a pairs>"
|
||||
(object-address vl)
|
||||
(vhash-fold (lambda (k v r)
|
||||
(+ 1 r))
|
||||
0
|
||||
vl)))
|
||||
(else
|
||||
(format port "#<vlist ~a>"
|
||||
(vlist->list vl))))))
|
||||
|
||||
|
||||
(define vlist-null
|
||||
;; The empty vlist.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue