[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: multiple values
So is this a permissible implementation of your proposal? It seems to me
that it must be since you only try to specify what happens if other than
one value is returned to WITH-VALUES, and nowhere else.
(define magic-multiple-values-marker (list '* 'multiple 'values '*))
(define (values . vals)
(if (= 1 (length vals))
(car vals)
(cons magic-multiple-values-marker vals)))
(define (with-values thunk receive)
(let ((result (thunk)))
(if (and (pair? result)
(eq? (car result) magic-multiple-values-marker))
(apply receive (cdr result))
(receive result))))