Have you considered using this kind of macro: #lang racket
(define-syntax ==> (syntax-rules () [(_ (it) one) one] [(_ (it) one two ...) (let ((it one)) (==> (it) two ...))])) (==> (it) (+ 1 1) (+ it 1) (+ it it)) (define mult *) (==> (it) (* 1 1) (* it 1) (* it it)) On Feb 12, 2012, at 3:09 PM, FS Racket wrote: > > > On Sun, Feb 12, 2012 at 1:34 PM, Richard Cleis <rcl...@me.com> wrote: > The DrRacket interactions window replies with 48, not an error, when your > syntax is defined in the definitions window, your function is defined in the > interactions area, and the example is finally run in the interactions area. > > How are you making it fail? > > Also, have you attempted to use the Macro Stepper? Even if you aren't > actually debugging the macro, it coerces you to organize your thoughts about > how your code is organized (in this case, how the expansion relates to the > word 'mult' and it's actual definition.) > > rac > > > Hi Richard, > > Good questions. > > The way my code is organized is that the macro is in its own file and > installed as a collection in my personal library (i.e. the default location > of personal collections). I then create a new file, say "test.rkt", require > the macro library file, and then define the function "mult". Within this > same file, I then add the code examples contained in my previous email. > Finally, I "run" the "test.rkt" file using the "Racket -> Run" menu option. > > Yes, I have used the macro stepper; I should have mentioned that. It's > bizarre. Prior to any expansion, all identifiers named 'mult' have an > associated binding. As I step through the expansion in the following code, > the last 'mult' eventually loses its binding. I don't know how or why. > > (==> > (mult 12 2) > (mult 2 _) > (mult _ 1)) > > Please let me know if any further clarification is needed. > ____________________ > Racket Users list: > http://lists.racket-lang.org/users
____________________ Racket Users list: http://lists.racket-lang.org/users