On Apr 11, 2012, at 11:09 AM, Danny Yoo wrote:

>> This problem still remains in your newest version of `def', since as a user 
>> of `m' I still need to know that it uses `def' internally.
> 
> Oh!  I thought I designed the revised outer so that it should be
> agnostic to how 'm' works.

Sorry about that! I confused myself with a toy test case while looking at it. 
I'll have to explore a little further to see how it works. This one still seems 
a little confusing to me:

(define-syntax m3
 (syntax-rules ()
   ((_ id val)
    (let ()
      (def (h id)
        (def (g id)
          val)
        (g id))
      (h 2)))))

(def (g x)
  (def (h x)
    (m3 x (outer x)))
  (h 5))

-> "compile: unbound identifier (and no #%top syntax transformer is bound) in: 
x"

By the way, this doesn't seem to work, since the body ends up in a `syntax' 
form:

(def (f x)
  (define-syntax m3
    (syntax-rules ()
      ((_ id body ...)
       (begin
         (def (id x)
           (m2 (outer x)))
         body ...))))
  (m3 g (g 2)))

--
Brian Mastenbrook
br...@mastenbrook.net
http://brian.mastenbrook.net/


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

Reply via email to