diff options
author | Hugo Hörnquist <hugo@hornquist.se> | 2019-12-30 02:10:00 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@hornquist.se> | 2019-12-30 02:10:00 +0100 |
commit | defceb8dbdeba774af9cfea540ce1ba96928cc84 (patch) | |
tree | 49e97ebec32bc1532c8f3934b1640c9daf07fcaf /module/util.scm | |
parent | Improve error on bad param value. (diff) | |
download | calp-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.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)))) |