[racket] trace: set!: cannot mutate module-required identifier - alright .. how do you do this?

From: Thomas Lynch (thomas.lynch at reasoningtechnology.com)
Date: Mon Jan 19 08:59:55 EST 2015

Saw this in another thread here, but the proposed solution didnt work, well
at least the way I understood it.  So ..

In file db-lib.rkt  I have a definition:

(provide db-exec)
(define (db-exec a) ...)


Then in racket

> (enter! "db-user.rkt")


Where db-citation.rkt has

(require "db-lib.rkt")

Now at the read-eval-print prompt I try

(enter! "db-citation.rkt")


And when I do (trace db-exec)  I get the cannot mutate error.  (Surely this
must be a racket 101 type problem.)  So I try to include the module at the
current scope..

racket at db-citation.rkt> (require "db-lib.rkt")
racket at db-citation.rkt>     (require racket/trace)
racket at db-citation.rkt>    (trace db-exec)

racket at db-citation.rkt> stdin::1130: set!: cannot mutate module-required
identifier in: db-exec


ok, so that doesn't work,  so I start over again.  This time after reading
the thread on this list

From: Vincent St-Amour (stamourv at ccs.neu.edu)
Date: Mon Oct 10 13:49:46 EDT 2011

which concludes by saying 'put the trace in your program that should work',
  so I add this to "db-citation.rkt"

    (require racket/trace)
    (trace db-exec)


And then at the prompt I get the following:

Welcome to Racket v5.2.1.
racket@> (enter! "db-citation.rkt")
db-citation.rkt:26:11: set!: cannot mutate module-required identifier in:
db-exec


Alright, so what is the magic incantation here that allows one to
debug/trace calls in included modules?

Thanks!

Thomas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20150119/61839fb3/attachment.html>

Posted on the users mailing list.