(Previous discussion continued)
Re: propositions, oppositions, and some minor details Andre van Tonder 29 Sep 2004 12:56 UTC

Re: propositions, oppositions, and some minor details Andre van Tonder 29 Sep 2004 12:56 UTC

On Tue, 28 Sep 2004, Alex Shinn wrote:

> In a straightforward implementation along the lines of SRFI-9 (or
> built on top of it), the type may be a first class value and without
> low-level macros you wouldn't have access to filed information at
> compile time.  You would then need to check a mutability flag at
> runtime.

Such an implementation should be non-conformant.  I will amplify the
specification to say that a compile-time error has to be signaled if one
attempts to update! an immutable field (it should have been in there but
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.

> But I'm worried that the syntax is becoming hard to read and harder to
> extend.  Specifically, if you have a normal mutable field
>
>  (field-name)
>
> then later just add direct accessor
>
>  (field-name getter)
>
> you've suddenly made the field immutable.

Good point.  With compile-time checking, this becomes less of a problem.
However, if people find these shorthands confusing, I can remove them.
Let me know.

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.

Regards
Andre