Re: Initial comments & questions Alex Shinn 26 Mar 2004 03:24 UTC

At Thu, 25 Mar 2004 21:54:09 -0500 (EST), Andre van Tonder wrote:
> On Fri, 26 Mar 2004, Alex Shinn wrote:
> > Anyway, any Scheme can trivially handle both by renaming define-syntax
> > to something like internal-define-syntax and building a new
> > define-syntax on top of that.
> Don't you need module support for this?

I meant at the core language level (in most cases in C) you just do a
big query/replace s/((define|let|letrec)-syntax)/internal-\1/.

The wrapper then becomes the existing reference implementation for
define-syntax-computations (in terms of internal-define-syntax) plus:

  (internal-define-syntax define-syntax
    (syntax-rules (syntax-computations)
      ;; catch syntax-computations
      ((_ name (syntax-computations x ...))
       (define-syntax-computations name (syntax-computations x ...)))
      ;; manually add static checks for other cases like syntax-case
      ;; ...
      ;; default
      ((_ x ...)
       (internal-define-syntax x ...))))

and likewise for let-syntax and letrec-syntax.

Hackish but very easy and it's only the worst-case scenario.  It just
means the Scheme implementors themselves have to want SRFI-53 - end
users can't extend with an add-on module.  And of course you still have
no way to dynamically add new syntax-FOOs.