records: Add support for delayed fields.
authorLudovic Courtès <ludo@gnu.org>
Mon, 19 Jan 2015 22:21:47 +0000 (23:21 +0100)
committerLudovic Courtès <ludo@gnu.org>
Mon, 19 Jan 2015 22:30:42 +0000 (23:30 +0100)
commit310b32a2a6136a99d3c48542bf68d0d8b550f42f
treeb2683034739ef7ef05b15839557ae6c22d894843
parent0db40ed289388d049ec9ecfd9661cc1d74a9ef3e
records: Add support for delayed fields.

* guix/records.scm (make-syntactic-constructor): Add #:delayed
  parameter.
  [delayed-field?]: New procedure.
  [wrap-field-value]: Use it.
  (define-record-type*)[delayed-field?, wrapped-field?]: New procedures.
  [thunked-field-accessor-name]: Rename to...
  [wrapped-field-accessor-name]: ... this.
  [field-spec->srfi-9]: Change 'thunked' to 'wrapped'.
  [delayed-field-accessor-definition]: New procedure.
  Compute delayed-field accessors and emit them.  Pass #:delayed to
  'make-syntactic-constructor'.
* tests/records.scm ("define-record-type* & delayed",
  "define-record-type* & delayed & default",
  "define-record-type* & delayed & inherited"): New tests.
guix/records.scm
tests/records.scm