[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: isn't computation-rules redundant?

This page is part of the web mail archives of SRFI 53 from before July 7th, 2015. The new archives for SRFI 53 contain all messages, not just those from before July 7th, 2015.



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.