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)
|
(define-module (ice-9 vlist)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-9)
|
#:use-module (srfi srfi-9)
|
||||||
|
#:use-module (srfi srfi-9 gnu)
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
|
|
||||||
#:export (vlist? vlist-cons vlist-head vlist-tail vlist-null?
|
#:export (vlist? vlist-cons vlist-head vlist-tail vlist-null?
|
||||||
|
@ -148,6 +149,21 @@
|
||||||
(base vlist-base)
|
(base vlist-base)
|
||||||
(offset vlist-offset))
|
(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
|
(define vlist-null
|
||||||
;; The empty vlist.
|
;; The empty vlist.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue