[Top][All Lists]
[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.
- [Chicken-janitors] #805: case-lambda is unhygienic,
Chicken Trac <=