chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-janitors] #277: keywords should not be renamed by syntax expans


From: Chicken Trac
Subject: [Chicken-janitors] #277: keywords should not be renamed by syntax expansion
Date: Sun, 27 Jun 2010 16:16:57 -0000

#277: keywords should not be renamed by syntax expansion
----------------------+-----------------------------------------------------
 Reporter:  felix     |       Owner:  felix
     Type:  defect    |      Status:  new  
 Priority:  critical  |   Milestone:  4.6.0
Component:  expander  |     Version:  4.5.x
 Keywords:  keywords  |  
----------------------+-----------------------------------------------------
 (Example by sjamaan)

 {{{
 (define-syntax foo
   (syntax-rules ()
     ((foo procname)
      (define (procname #!key (who "world"))
        (print "hello, " who)))))

 (foo bar)

 (bar who: 1)
 }}}

 expands into:

 {{{
 (set! bar
   (##core#lambda
     tmp3839
     (let ((who3040
             (##sys#get-keyword 'who30: tmp3839 (##core#lambda ()
 '"world"))))
       (let () (print '"hello, " who3040)))))
 }}}

 and doesn't detect the "who:" keyword correctly on invocation.
 Note that the `who` variable must be renamed, the keyword not.

-- 
Ticket URL: <http://www.irp.oist.jp/trac/chicken/ticket/277>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]