Sample implementation Lars Thomas Hansen (17 Jan 2000 14:27 UTC)
Re: Sample implementation Matthias Felleisen (17 Jan 2000 14:39 UTC)
Re: Sample implementation Per Bothner (17 Jan 2000 19:44 UTC)
Re: Sample implementation Lars Thomas Hansen (17 Jan 2000 20:53 UTC)
a meta-comment Per Bothner (17 Jan 2000 20:00 UTC)
Re: a meta-comment Lars Thomas Hansen (17 Jan 2000 21:14 UTC)

Re: Sample implementation Lars Thomas Hansen 17 Jan 2000 20:53 UTC

>Thanks!  That looks pretty good.  Two nits:
>
>> (define-syntax set! let*
>>   (syntax-rules ()
>>     ((set! (?e0 ?e1 ...) ?v)
>>      ((setter ?e0) ?e1 ... ?v))
>>     ((set! ?i ?v)
>>      (set! ?i ?v))))
>
>Why the question-marks?  It makes it look like they have
>some syntactic signifigance, but it is really just a
>naming convention.  Is it a common naming convention?

Well, they do have syntactic significance: they are used to prefix
pattern variables only... :-)

I see it often enough, and the thing is, in large macros that introduce
new bindings they help distinguishing pattern variables from those
introduced by the macro.  For example, I sometimes find myself doing
stupid things like

	(define-syntax foo
	  (syntax-rules
	    ((foo e)
	     (let ((e e))  ; evaluate e once
	       ... use e here ...))))

which doesn't work.  If I use ?e for the pattern variable then I am
forced to think about when I am using a pattern variable, which helps me
avoid stupid mistakes like above, and others.

--lars