From ad30b48a9fa2c50a20709be4bb8d5d1c6cff783c Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Wed, 25 May 2011 23:29:30 +0900 Subject: [PATCH] grudingly supporting MV continuations --- lib/init.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/init.scm b/lib/init.scm index 5598f8c5..8e37d1df 100644 --- a/lib/init.scm +++ b/lib/init.scm @@ -569,11 +569,13 @@ (define *values-tag* (list 'values)) -(define (values . ls) +(define (%values ls) (if (and (pair? ls) (null? (cdr ls))) (car ls) (cons *values-tag* ls))) +(define (values . ls) (%values ls)) + (define (call-with-values producer consumer) (let ((res (producer))) (if (and (pair? res) (eq? *values-tag* (car res))) @@ -604,7 +606,7 @@ (define (call-with-current-continuation proc) (let ((dk *dk*)) - (%call/cc (lambda (k) (proc (lambda (x) (set-dk! dk) (k x))))))) + (%call/cc (lambda (k) (proc (lambda x (set-dk! dk) (k (%values x)))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; syntax-rules