Re: Suggestions and EIOD update campbell@xxxxxx 10 Nov 2004 14:27 UTC

On Sun, 7 Nov 2004, Alcoholic Petrofsky wrote:

> The eiod-based reference implementation says:
>
>   ;; eiod.scm: eval-in-one-define
>   ;; $Id: eiod.scm,v 1.2 2004/11/07 17:32:23 campbell Exp $
>
> If you want to add your own version information, that's fine, but
> please do not put anything out on the net that only identifies itself
> as eiod 1.2, unless it is the petrofsky.org eiod 1.2, which is dated
> 2002/05/21 and is quite different from what you have there.  I suggest
> you add something like this:
>
>   ;; The rest of this file is eiod.scm version 1.16 from
>   ;; http://petrofsky.org/src

Whoa!  Sorry, I didn't even notice the RCS tag junk when I committed it
to srfi.schemers.org -- the updating of it was automatic and completely
beyond my notice.  I'll fix that immediately.

Please make a similar change in alexpander (also, I suggest you fetch
> a more recent version of alexpander).

...and that too.

> xxxxxx@autodrip.bloodandcoffee.net wrote in message
> <Pine.LNX.4.44.0411070951080.1365-100000@autodrip.bloodandcoffee.net>
> (which doesn't seem to have made it to schemers.org yet, but of which
> I received a carbon copy)

Yes, my SRFI subscriptions are *really* screwed up.  I pestered the
editors about it a little while ago, but to very little noticeable
effect.  I never remember which SRFI lists I'm still subscribed to, so
I just Cc them anyway and hope someone notices the email.

> > >   ... The macro system must make the usual hygienic arrangements
> > >   to preserve the lexical scoping of these bindings.
> >
> > OK, I've changed the text to look a bit more like this.
>
> Draft 1.3 says:
>
>   ... The macro system implementation must make usual hygienic
>   arrangements to preserve & protect the lexical scope of these
>   bindings.
>
> I think "usual" needs to be "the usual" or "its usual".  Perhaps
> better would be "... must make the hygienic arrangements described in
> r5rs section 4.3 to preserve ...".

OK, I shall specify that further.

> > > Here's an example you could use, whose result depends on whether or
> > > not F inserts the binding for ::: hygienicly:
> > >
> > >   (let-syntax
> > >       ((f (syntax-rules ()
> > > 	    ((f e)
> > > 	     (let-syntax
> > > 		 ((g (syntax-rules ::: ()
> > > 		       ((g (x e) (y :::))
> > > 			'((x) e (y) :::)))))
> > > 	       (g (1 2) (3 4)))))))
> > >     (f :::))
> > >   => ((1) 2 (3) (4))    [ rather than ((1) (2) (3) (4)) ]
> >
> > I have added this example.
>
> You added it like this:
>
>   (let-syntax
>       ((f (syntax-rules ()
> 	    ((f ?e)
> 	     (let-syntax
> 		 ((g (syntax-rules ::: ()
> 		       ((g (??x ?e) (??y :::))
> 			'((??x) ?e (??y :::))))))
> 	       (g (1 2) (3 4)))))))
>     (f :::))
>
>       ; => ((1) 2 (3 4)), if hygienic rules of ellipsis identifiers are
>       ;      correctly implemented, not ((1) (2) (3) (4))
>
> You need to change that to "not ((1) (2) (3 4))", or (preferably) to
> follow my example more closely and change '((??x) ?e (??y :::)) to
> '((??x) ?e (??y) :::) and change "=> ((1) 2 (3 4))" to "=> ((1) 2 (3)
> (4))".

Whoops.  I suspect that the opium I consumed earlier today for lunch
dessert in the form of bearclaw-related foods may have something to do
with this confusion.  I'll fix this, too.

> I think the "tail patterns" feature would also benefit from at least
> > > one example expression, which should explicitly include the
concrete
> > > result you expect.  Here's one:
> > >
> > >   (let-syntax
> > >       ((foo (syntax-rules ()
> > > 	      ((foo x y ... z) (list x (list y ...) z)))))
> > >     (foo 1 2 3 4 5))
> > >   => (1 (2 3 4) 5)
> >
> > I think this example isn't really necessary; there already is one --
> > FAKE-BEGIN -- which I think suffices.
>
> I like the expanded discussion of fake-begin, but I still think you
> should have *at least* one example in the r5rs 1.3.4 format of
> "<expression> => <value>", which allows people to cut and paste
> <expression> into a repl and see <value> printed, and also allows them
> to easily add the expression (equal? <expression> '<value>) to a test
> suite and expect it to evaluate to #t.

OK, very well, I'll add that.

After all these changes you have made to the SRFI, Al*, at both the
levels of fundamental design and written content, I think you really
deserve to be noted as one of the SRFI's authors; after all, I just
started the SRFI and wrote some text, whereas you changed the main body
of the SRFI to be CYOE and rewrote much of the significant text -- do
you agree, and would you mind if I update the document to reflect this?