[racket] module-level definitions vs. local definitions and how binding works
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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140727/eb825ea1/attachment.html>