The paragraph in 1.2.3.9 starts with "For a top-level definition (outside of a module), the order of evaluation affects the binding of a generated definition for a generated identifier use." So when you run this example in a top-level environment, e.g., the interactions window (aka repl) it works fine:
> (defs-and-usess) #t If you place this example in a definitions window with #lang racket, it is INSIDE a module and signals the error you mention in your message. This is indeed a subtle point, and I wish we had no top-level. -- Matthias On Sep 11, 2011, at 8:18 PM, André Mayers wrote: > In the section 1.2.3.9 : Macro-Introduced Bindings > > the example below give the following error > "define-syntaxes: context (defining "odd.1", ...) expected 2 values, > received 0 values" > > (define-syntax defs-and-uses > (syntax-rules () > [(def-and-use) > (begin > ; Declare before definition via no-values define-syntaxes: > (define-syntaxes (odd even) (values)) > (define (odd x) (if (zero? x) #f (even (sub1 x)))) > (define (even x) (if (zero? x) #t (odd (sub1 x)))) > (odd 17))])) > > > > > André Mayers, Ph.D., M. Ps. > professeur agrégé > Département d'informatique > Université de Sherbrooke > Sherbrooke (Québec) Canada J1K 2R1 > tél: +1 819-821-8000 poste 62041 > fax: +1 819-821-8200 > andre.may...@usherbrooke.ca > http://info.usherbrooke.ca/AndreMayers > > > > _________________________________________________ > For list-related administrative tasks: > http://lists.racket-lang.org/listinfo/users _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users