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

Re: Initial comments & questions

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.

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.