It seems like “hygienic reader extensions” still work when a module-level 
definition conflicts with it, but it seems like if it’s a local binding the 
local binding overrides the one in the reader extension.  

For example:
#lang rackjure
;; this works:
(define lambda "module-level-whatever")
#λ(void %1) ; #<procedure>
;; this doesn't work
(let ([lambda "local-whatever"]
      [%1 void]
      [define-syntax void]
      [% void])
  #λ(void %1)) ; application: not a procedure;
;              ;   expected a procedure that can be applied to arguments
;              ;   given: "local-whatever"
;              ;   arguments…:

Why does it work at the module-level and not within a let? 

Is this a bug, or should reader extensions not be used this way, or what?  

What’s going on here?


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to