It's supposed to be safe; the behavior in this example is definitely a bug.
The `#%variable-reference` form used to work only on top-level and module variables. It seems that I forgot to fill in some pieces when I made `#%variable-reference` work on local bindings (several years ago, mainly for use with `variable-reference-constant?` in the expansion of certain keyword-function forms). Thanks for the report! At Mon, 12 Jan 2015 19:31:52 -0500, Jon Zeppieri wrote: > I'm not sure if #%variable-reference is supposed to be unsafe or not > (it's not mentioned in the documentation), but it looks like an > attempt to get the location of an identifier that is neither top-level > nor module-level results in a hard crash: > > === > #lang racket/base > > (define (go) > (define foo 3) > (#%variable-reference foo)) > > (go) > _________________________ > Racket Developers list: > http://lists.racket-lang.org/dev _________________________ Racket Developers list: http://lists.racket-lang.org/dev