aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2023-12-16 23:15:21 +0100
committerWojtek Kosior <koszko@koszko.org>2023-12-16 23:15:21 +0100
commit7c23b2d0fcee30f15dbf27cf26ef280a6dde398e (patch)
treee5d5c7fb912b2afaa8beaa9b4cb3ae5869eed8a2
parentcd3bb8b57cbf4f0846664ab1e15ccb76f3b29b4b (diff)
downloadde-paul-records-7c23b2d0fcee30f15dbf27cf26ef280a6dde398e.tar.gz
de-paul-records-7c23b2d0fcee30f15dbf27cf26ef280a6dde398e.zip
Allow using multiple expressions in field update form.HEADapprentice
-rw-r--r--src/guile/de-paul-records.scm7
-rw-r--r--tests/guile/de-paul-records-test.scm4
2 files changed, 6 insertions, 5 deletions
diff --git a/src/guile/de-paul-records.scm b/src/guile/de-paul-records.scm
index 4b4e91b..5aa05f8 100644
--- a/src/guile/de-paul-records.scm
+++ b/src/guile/de-paul-records.scm
@@ -135,12 +135,11 @@
(#,(format-identifiers "~a-~a" record-name #'field-name)
#,record-base))))))
- ((field-name #:-> value-update-expr)
+ ((field-name #:-> value-update-expr value-update-expr-rest ...)
(identifier? #'field-name)
(syntax->field-init #'(field-name #:=> (lambda (field-name)
- value-update-expr))))))
-
-
+ value-update-expr
+ value-update-expr-rest ...))))))
(define-immutable-record-type <record-init> (make-record-init) record-init?
(inherit record-init-inherit record-init-set-inherit)
diff --git a/tests/guile/de-paul-records-test.scm b/tests/guile/de-paul-records-test.scm
index 95d1cb3..7bcc60d 100644
--- a/tests/guile/de-paul-records-test.scm
+++ b/tests/guile/de-paul-records-test.scm
@@ -80,7 +80,9 @@
'(begin
(define %paren-3001.1
(lisp #:<- %paren-3001
- (name #:-> (string-append name ".1"))
+ (name #:->
+ ((const 'test-noop))
+ (string-append name ".1"))
(is-syntactically-scoped? #t)))
(match `(a . ,%paren-3001.1)