Email list hosting service & mailing list manager


Re: isn't computation-rules redundant? campbell@xxxxxx 23 Mar 2004 17:44 UTC

On Tue, 23 Mar 2004, Alex Shinn wrote:

> I have the same pet-peeve with {define,let,letrec}-syntax and
> syntax-rules, but in
>
>   (define-syntax-computation foo
>     (computation-rules () ...))
>
> computation-rules is a noiseword.  You could just as easily write
>
>   (define-syntax-computation foo ()
>     ...)
>
> [snip]
>
> Am I missing something?

Yes.  DEFINE-SYNTAX is supposed to be the _universal_ derived syntax
definition form.  DEFINE-SYNTAX-COMPUTATION should be the noise word;
you should be able to do things like:

  (define-syntax foo (syntax-rules () ...))
  (define-syntax bar
    (explicit-renaming (lambda (form rename compare) ...)))
  (define-syntax baz
    (syntax-computations () ;or computation-rules, or whatever
      ...))
  (define-syntax quux
    (syntactic-closures (lambda (form creation-env usage-env) ...)))

The fact that you currently cannot extend the set of transformer forms
for the right-hand-sides of syntax definitions is due to entirely
separate issues regarding module systems, environment towers, and other
matters.  If R6RS defines a Scheme48-style module system, as has been
suggested at the 2003 Scheme Workshop, you'll certainly be able to
easily extend that set without saying 'this set is extended by this
SRFI but I sha'n't tell you how,' as is necessary currently.