This is the mail archive of the guile@cygnus.com mailing list for the guile project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
> > but once Guile does have multiple return values, > And when will this be? :-) The following is said to be an R5RS compliant implementation of multiple values in R4RS Scheme. Am I missing something, or couldn't somebody just toss this into an initialization file and be a happy hacker? From: William D Clinger <will@ccs.neu.edu> Newsgroups: comp.lang.scheme ; Multiple values. ; ; (values E ...) ; (call-with-values producer consumer) (define values) (define call-with-values) (let* ((apply apply) (*multiple-values* (list '*multiple-values*)) (*values0* (list *multiple-values*))) (set! values (lambda vals (cond ((null? vals) *values0*) ((null? (cdr vals)) (car vals)) (else (cons *multiple-values* vals))))) (set! call-with-values (lambda (producer consumer) (let ((vals (producer))) (if (and (pair? vals) (eq? (car vals) *multiple-values*)) (apply consumer (cdr vals)) (consumer vals))))) 'call-with-values)