aboutsummaryrefslogtreecommitdiff
path: root/module/util.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@hornquist.se>2019-12-30 02:10:00 +0100
committerHugo Hörnquist <hugo@hornquist.se>2019-12-30 02:10:00 +0100
commitdefceb8dbdeba774af9cfea540ce1ba96928cc84 (patch)
tree49e97ebec32bc1532c8f3934b1640c9daf07fcaf /module/util.scm
parentImprove error on bad param value. (diff)
downloadcalp-defceb8dbdeba774af9cfea540ce1ba96928cc84.tar.gz
calp-defceb8dbdeba774af9cfea540ce1ba96928cc84.tar.xz
Introduce printer: argument to define-quick-record.
Diffstat (limited to 'module/util.scm')
-rw-r--r--module/util.scm6
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))))