Re: the number of fields Andre van Tonder 07 Nov 2004 17:33 UTC

On Sun, 7 Nov 2004 xxxxxx@autodrip.bloodandcoffee.net wrote:

> It is because the implementation performs such heavy syntax-rules-based
> computation that Scheme48's heap overflows.  You can 'fix' the problem
> by increasing the heap, but that will solve it only temporarily.  The
> real problem is that this SRFI's reference implementation just does too
> much with syntax-rules;

I agree that it is a little silly to try to do so much with syntax-rules.
Actually, early versions without inheritance were much simpler and very
suitable for syntax-rules, and when it grew it took less energy each time
to add a feature than to convert to a low-level macro system for which I
would have to maintain a separate version for each Scheme I want to test
it on (although I do have a partially converted but horrid-looking and
verbose syntax-case version).

Also, if one version was to be posted as proof of concept, choosing
syntax-rules was probably not entirely a bad decision.  If I had done it
in a low-level system, I would have probably chosen define-macro
or syntax-case, in which case it would not have run on Scheme48 at all
without some porting.

> even if it doesn't overflow the heap or so
> something equally horrid in other Scheme systems, it is _miserably_
> sluggish.  I haven't used it much, but I've heard from some people that
> it takes up to an hour to expand a single DEFINE-RECORD-TYPE form.

One could argue that those systems are not /usefully/ R5RS compliant.
There is really no excuse for that kind of performance.  On Petite Chez,
which is interpreted, expansion is instantaneous.  Even on MzScheme,
which I regard as relatively slow, it takes of the order of only a second
per record type definition on my modest machine.

> It
> would be a *gargantuan* improvement to provide at least two or three
> reference implementations: the original one in plain syntax-rules, one
> in syntactic closures (as the most simply expressive, I argue, hygienic
> macro system -- the best basis for a _reference_ implementation), and
> perhaps one or two in any number of the incompatible variants of
> syntax-case.

I completely agree.  Any volunteers?  The soon-to-appear updated version
is a little simpler and may be easier to convert.  In the meantime I
can send it privately to anyone upon request.  It should also not be hard
to write a low-level implementation from scratch.

Regards
Andre