[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#34948] [PATCH 1/3] records: Allow thunked fields to refer to 'this-
From: |
Ricardo Wurmus |
Subject: |
[bug#34948] [PATCH 1/3] records: Allow thunked fields to refer to 'this-record'. |
Date: |
Fri, 22 Mar 2019 22:53:07 +0100 |
User-agent: |
mu4e 1.0; emacs 26.1 |
Ludovic Courtès <address@hidden> writes:
> * guix/records.scm (this-record): New syntax parameter.
> (make-syntactic-constructor)[wrap-field-value]: When F is thunked,
> return a one-argument lambda instead of a thunk, and parameterize
> THIS-RECORD.
So the value of the thunked field is no longer strictly a thunk?
I’m having difficulties understanding how this works. Why does the
“thunked field” now require an argument (“x”)?
We use the syntax parameter “this-record” to introduce a new binding
with this name in the context of the “value” of the field. The
parameter value is … hard to make out. How does the syntax-case macro
in the following syntax-parameterize expression evaluate to the record
itself? Would #,x not be sufficient to refer to the argument of the
field accessor?
> (define (wrap-field-value f value)
> (cond ((thunked-field? f)
> - #`(lambda () #,value))
> + #`(lambda (x)
> + (syntax-parameterize ((this-record
> + (lambda (s)
> + (syntax-case s ()
> + (id
> + (identifier? #'id)
> + #'x)))))
--
Ricardo