scsh-0.5/alt/values.scm

20 lines
513 B
Scheme

; Copyright (c) 1993, 1994 Richard Kelsey and Jonathan Rees. See file COPYING.
; Multiple return values
(define multiple-value-token (vector 'multiple-value-token))
(define (values . things)
(if (and (pair? things)
(null? (cdr things)))
(car things)
(cons multiple-value-token things)))
(define (call-with-values producer consumer)
(let ((things (producer)))
(if (and (pair? things)
(eq? (car things) multiple-value-token))
(apply consumer (cdr things))
(consumer things))))