diff options
Diffstat (limited to '')
-rw-r--r-- | module/util.scm | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/module/util.scm b/module/util.scm index ca74470e..ce3f0e4e 100644 --- a/module/util.scm +++ b/module/util.scm @@ -112,11 +112,15 @@ (define-macro (define-quick-record name . fields) (let ((public-fields (or (assoc-ref fields #:public) '())) - (private-fields (or (assoc-ref fields #:private) '()))) + (private-fields (or (assoc-ref fields #:private) '())) + (printer (and=> (assoc-ref fields #:printer) car))) `(begin ,@(%define-quick-record '(@ (srfi srfi-9 gnu) define-immutable-record-type) #f name (append public-fields private-fields)) + (when ,printer + ((@ (srfi srfi-9 gnu) set-record-type-printer!) + ,(class-name name) ,printer)) ,@(map (lambda (field) `(export ,field)) public-fields)))) |