chicken-janitors
[Top][All Lists]
Advanced

[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.

reply via email to

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