>>7
Could you elaborate on what mistakes of R5RS you mean? And what kinds of records would you prefer?
* Lack of modules. Not really a mistake, there's still no One True Module System today, I doubt there was one in 1998.
*
syntax-rules is perfect for trivial things, but it doesn't scale up well when things get complex. Again, not R5RS' fault, good, powerful and sane hygienic macros are a recent thing (And by that, I mean
syntax-parse)
*
set! & co. returning
an unspecified value.
This is why all Schemes need a special
#<void>/
#<unspecified> value. The spec should really say they return unspecified value
s, such that they can also return 0 values, which is the sane thing to do.
This is actually a mistake inherited from R4RS, which had no multiple values, so it needed the ``unspecified'' value. R5RS introduced multiple values, but didn't lift this restriction.
Of course,
set! can just return the previous/new value of the
set!ed variable, but there's not meaningful return value for
when,
display,
for-each, etc.
Why do I care so much about this? Because it's a pointless and stupid restriction.
*
call/cc over
control0+
prompt. Not R5RS fault.
* Lack of user-defined data structures.
R7RS had a good proposal
here it is: http://trac.sacrideo.us/wg/wiki/RecordsGleckler for a forward-compatible (i.e., extensible without breaking code) syntactical records system, backed by a procedural interface, like R6RS records without the bloat.
I personally prefer ADTs over records, but I can't imagine using them in a Lisp.