summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/ice-9/vlist.scm16
1 files changed, 16 insertions, 0 deletions
diff --git a/module/ice-9/vlist.scm b/module/ice-9/vlist.scm
index d72e6c108..5ea09362c 100644
--- a/module/ice-9/vlist.scm
+++ b/module/ice-9/vlist.scm
@@ -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.