From defceb8dbdeba774af9cfea540ce1ba96928cc84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 30 Dec 2019 02:10:00 +0100 Subject: Introduce printer: argument to define-quick-record. --- module/util.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'module/util.scm') 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)))) -- cgit v1.2.3