[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #1002: define-values is overly restrictive
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #1002: define-values is overly restrictive |
Date: |
Fri, 29 Mar 2013 05:43:37 -0000 |
#1002: define-values is overly restrictive
--------------------------+-------------------------------------------------
Reporter: johnwcowan | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: someday
Component: unknown | Version: 4.8.x
Resolution: | Keywords:
--------------------------+-------------------------------------------------
Comment(by johnwcowan):
Here's the definition from R7RS:
{{{
(define-syntax define-values
(syntax-rules ()
((define-values () expr)
(define dummy
(call-with-values (lambda () expr)
(lambda args \schfalse))))
((define-values (var) expr)
(define var expr))
((define-values (var0 var1 ... varn) expr)
(begin
(define var0
(call-with-values (lambda () expr)
list))
(define var1
(let ((v (cadr var0)))
(set-cdr! var0 (cddr var0))
v)) ...
(define varn
(let ((v (cadr var0)))
(set! var0 (car var0))
v))))
((define-values (var0 var1 ... . varn) expr)
(begin
(define var0
(call-with-values (lambda () expr)
list))
(define var1
(let ((v (cadr var0)))
(set-cdr! var0 (cddr var0))
v)) ...
(define varn
(let ((v (cdr var0)))
(set! var0 (car var0))
v))))
((define-values var expr)
(define var
(call-with-values (lambda () expr)
list)))))
}}}
--
Ticket URL: <http://bugs.call-cc.org/ticket/1002#comment:1>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.