GNU bug report logs -
#34948
[PATCH 0/3] Turn 'essential-services' into an <operating-system> field
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Fri, 22 Mar 2019 17:22:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #17 received at 34948 <at> debbugs.gnu.org (full text, mbox):
Ludovic Courtès <ludo <at> gnu.org> 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
This bug report was last modified 6 years and 53 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.