Let me suggest this: #lang racket
(define (main-of-your-program) (displayln (my-gensym)) (displayln (my-gensym))) (define my-gensym 0) ;; --- test: (require (only-in mzscheme fluid-let)) (define (generate-a-predictable-symbol) 'a0) (fluid-let ((my-gensym generate-a-predictable-symbol)) (main-of-your-program)) my-gensym The above used to work without the 'my-' prefix BUT we decided to make imports constant. -- Matthias On Jan 31, 2012, at 7:38 AM, zermelo wrote: > I have the following problem. I want to replace procedure gensym with a > mock > to test a piece of software with predictable gensym values. When this is > done, > I restore the old gensym. > Thus I wrote this code in racket: > > (define old-gensym gensym) > (define gensym <a mock ...>) > ...test... > (define gensym old-gensym) > > but when I run it, I get "reference to an identifier before its > definition: gensym". > On the other hand, if I write the same code in the interaction window, > everything works as expected. > > Is this a bug? > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users