Email list hosting service & mailing list manager


Re: propositions, oppositions, and some minor details Andre van Tonder 30 Sep 2004 13:38 UTC

On Wed, 29 Sep 2004, Alex Shinn wrote:

> At Wed, 29 Sep 2004 08:56:59 -0400 (EDT), Andre van Tonder wrote:

>> I must have ovelooked it).  Compile-time checking of field
>> validity is one of the points of this SRFI.  It can be done with
>> high-level macros.  The reference implementation does
>> this.
>
> I can't think of a way to do this in syntax-rules if the name of the
> record-type itself is a first-class value.  The reference
> implementation relies on the fact that the name is a macro.
> But this is a minor issue ...

You are correct, of course, although I can think of a workaround in
the (nonstandard, but common) implementations of syntax-rules that
treat define as a binding form.  Just expand the record definition to

   (define record-type ....first-class-value-here...)
   (define-syntax record-name
     (syntax-rules ()
       ((record-name "type") record-type)
       ..........

Here record-type is a hygienically introduced new temporary identifier,
whose value can then be accessed via the macro invocation
(record-name "type").  So you can have your first class value and your
macro to do with as you please.

>> I like the current solution where the "mutability flag" is simply whether
>> there is a third element in the field spec (either setter or #f).
>> Otherwise things can become too wordy.  This does not exclude future usage
>> of keyword arguments for other attributes.
>
> But if you make future extensions then the current design has no way
> to specify immutability.  Once you add a fourth element, there will
> always be a third element.

This will not be a problem if additional extensions are all keyword
attributes, which the current design would require.

Cheers
Andre