[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #805: case-lambda is unhygienic
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #805: case-lambda is unhygienic |
Date: |
Sun, 25 Mar 2012 08:14:46 -0000 |
#805: case-lambda is unhygienic
-----------------------------+----------------------------------------------
Reporter: syn | Owner: ckeen
Type: defect | Status: accepted
Priority: minor | Milestone: 4.8.0
Component: core libraries | Version: 4.7.x
Resolution: | Keywords:
-----------------------------+----------------------------------------------
Changes (by ckeen):
* owner: => ckeen
* status: new => accepted
Comment:
Does the following patch solve the issue for you?
{{{
diff --git a/chicken-syntax.scm b/chicken-syntax.scm
index 08bede2..c92e0f3 100644
--- a/chicken-syntax.scm
+++ b/chicken-syntax.scm
@@ -764,7 +764,8 @@
`((>= . ,(##sys#primitive-alias '>=))
(car . ,(##sys#primitive-alias 'car))
(cdr . ,(##sys#primitive-alias 'cdr))
- (eq? . ,(##sys#primitive-alias 'eq?)))
+ (eq? . ,(##sys#primitive-alias 'eq?))
+ (length . ,(##sys#primitive-alias 'length)))
(##sys#er-transformer
(lambda (form r c)
(##sys#check-syntax 'case-lambda form '(_ . _))
@@ -785,11 +786,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
}}}
--
Ticket URL: <http://bugs.call-cc.org/ticket/805#comment:1>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.