Summary

bound variables get stripped incorrectly

Metadata

Description

Matthew Flatt reports:

The following program prints a gensym in v4.7.0 and 4aaea216cc9887, but I think it should print the symbol 'x:

  (define-syntax c 
    (syntax-rules () 
      [(_) 
       (let ([x 10]) 
         (let-syntax ([z (syntax-rules ()
                           [(_) (quote x)])])
           (write (z))
           (newline)))]))
 
  (c)

I wrote the example because I'm suspicious of "compiler.scm" treating `##core#quote' and `##core#syntax` the same. Maybe `##sys#strip-syntax` in "expand.scm" is supposed to do different things in quote and syntax mode; the comment "if se is given, retain bound vars" in `##sys#strip-syntax` suggests that it had two modes at some point in the past.

Changes and comments

[2011-06-23 19:12:53 UTC] felix changed description

[2011-06-23 20:48:29 UTC] sjamaan changed status from new to assigned

[2011-06-23 20:48:29 UTC] sjamaan changed owner from sjamaan to felix

[2011-06-23 20:48:29 UTC] sjamaan wrote:

Please try 41cff6f in the resurrected expander-simplifications branch.

[2011-06-23 22:27:28 UTC] sjamaan wrote:

also 315fc36

[2011-06-24 17:36:41 UTC] sjamaan changed status from assigned to closed

[2011-06-24 17:36:41 UTC] sjamaan set resolution to fixed

[2011-06-24 17:36:41 UTC] sjamaan wrote:

Was merged, closing

[2012-09-24 21:47:48 UTC] felix wrote:

Milestone 4.8.0 deleted

[2012-09-24 21:47:48 UTC] felix changed milestone from 4.8.0 to 4.9.0