Re: [racket-users] Macro-generating macros

2015-09-04 Thread Alexander D. Knauth
> On Sep 4, 2015, at 4:26 AM, Konrad Hinsen wrote: > > Brian Mastenbrook writes: > >> It's a capture problem. In the first case, you're just binding the >> name "send" locally and all is well. In the second case, you're >> trying to introduce a binding for "send"

Re: [racket-users] Macro-generating macros

2015-09-04 Thread William Cushing
Racket's syntax-expander deliberately goes out of its way to break exactly this example. ("hygiene") The issue/bug/ambiguity it is protecting you from is: (let ((send (lambda args (length args)) )) (def (foo3 x y) (send x + y) )) (foo3 2 3) ;; In lisps with poor grooming, 5.

Re: [racket-users] Macro-generating macros

2015-09-04 Thread Konrad Hinsen
Alexander D. Knauth writes: > > At least it's one that works. It feels like cheating to use dynamic > > scoping to get around a problem with lexical scoping, but knowing when > > to cheat is a fundamental competence when dealing with any bureaucracy ;-) > > Um, the reason a syntax parameter

Re: [racket-users] Macro-generating macros

2015-09-04 Thread Konrad Hinsen
Brian Mastenbrook writes: > It's a capture problem. In the first case, you're just binding the > name "send" locally and all is well. In the second case, you're > trying to introduce a binding for "send" that you didn't get from > the input form. Ahhh that one has bitten me before, but I

[racket-users] Macro-generating macros

2015-09-03 Thread Konrad Hinsen
Hi everyone, Here's another plea for help from the macro experts. I am trying to write a macro whose expansion contains another macro, more precisely a let-syntax form. My full example is attached below. In the first part, I use a let-syntax directly. In the second part, I use a macro that

Re: [racket-users] Macro-generating macros

2015-09-03 Thread Brian Mastenbrook
On Sep 3, 2015, at 11:44, Konrad Hinsen wrote: > Hi everyone, > > Here's another plea for help from the macro experts. I am trying to > write a macro whose expansion contains another macro, more precisely a > let-syntax form. My full example is attached below. In the