Glad to see this has made it to SRFI stage.

As I said elsewhere while this was still in pre-SRFI state, although I strongly 
dislike the magic generation of identifiers and thus generally dislike R6RS 
define-record-type syntax, I would vote for this (with the changes below, 
especially the latter ones) as a resolution to the conflict between the R6RS 
and R7RS camps on the record type issue.

However, I still maintain that we should abandon or deprecate the idea of the 
record constructor descriptor, i.e. the (default) record constructor descriptor 
should be rolled into the record type descriptor together and bound to the name 
given by the ⟨name spec⟩/⟨name⟩. The whole idea of the record constructor 
descriptor is over-engineering – if I want a custom constructor with default 
values or whatever, I write a simple wrapper procedure.

This also means it would be possible to define a subtype of a record type in 
the SRFI 99 style, which I believe is essential. If we’re going to have opaque, 
sealed, and nongenerative records (which I don’t like, but can live with again 
for the sake of peace with the R6RS camp, if it will bring it), the R7RS style 
syntax should also be extended with a way to create those. If we’re going to 
support both styles, neither should be a second class citizen in terms of 
feature set.


Daphne

Reply via email to