chicken-janitors
[Top][All Lists]
Advanced

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

[Chicken-janitors] #805: case-lambda is unhygienic


From: Chicken Trac
Subject: [Chicken-janitors] #805: case-lambda is unhygienic
Date: Sun, 25 Mar 2012 00:53:43 -0000

#805: case-lambda is unhygienic
----------------------------+-----------------------------------------------
 Reporter:  syn             |       Owner:       
     Type:  defect          |      Status:  new  
 Priority:  minor           |   Milestone:  4.8.0
Component:  core libraries  |     Version:  4.7.x
 Keywords:                  |  
----------------------------+-----------------------------------------------
 {{{case-lambda}}} unhygienically expands to {{{length}}}. To wit:

 {{{
 #;1> (module foo (foo) (import (only scheme quote) (prefix chicken c/)
 (prefix scheme s/)) (s/define foo (c/case-lambda ((a) a) ((a b) b))))

 Warning: reference to possibly unbound identifier `length' in:
 Warning:    foo

 Error: module unresolved: foo
 }}}

 I tried the following fix but it doesn't seem to change a thing:

 {{{
 diff --git a/chicken-syntax.scm b/chicken-syntax.scm
 index 08bede2..a6c70d4 100644
 --- a/chicken-syntax.scm
 +++ b/chicken-syntax.scm
 @@ -785,11 +785,12 @@
            (%>= (r '>=))
            (%eq? (r 'eq?))
            (%car (r 'car))
 -          (%cdr (r 'cdr)))
 +          (%cdr (r 'cdr))
 +          (%length (r 'length)))
        `(##core#lambda
         ,(append minvars rvar)
         (##core#let
 -        ((,lvar (length ,rvar)))
 +        ((,lvar (,%length ,rvar)))
          ,(fold-right
            (lambda (c body)
              (##sys#decompose-lambda-list

 }}}

 Does anyone know what's going on?

-- 
Ticket URL: <http://bugs.call-cc.org/ticket/805>
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]