From 9ba922ff1cb347b3bb47331e39c79962a2957ba8 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Mon, 24 Dec 2007 11:29:33 +0000 Subject: [PATCH] reformatting svn: r8114 --- collects/scheme/promise.ss | 99 ++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/collects/scheme/promise.ss b/collects/scheme/promise.ss index 82f9fe146b..7d58c0e292 100644 --- a/collects/scheme/promise.ss +++ b/collects/scheme/promise.ss @@ -31,17 +31,14 @@ [(null? p) (fprintf port "#")] [(pair? p) ;; single or multiple values - (fprintf port + (fprintf port (if write? "#" port)] [(promise? p) (loop (promise-val p))] ; hide sharing [else (loop (list p))]))) @@ -89,52 +86,50 @@ (define handle-results (case-lambda - [(single) (values #t single)] - [multi (values #f multi)])) + [(single) (values #t single)] + [multi (values #f multi)])) (define (force promise) (if (promise? promise) - (let loop ([p (promise-val promise)]) - (cond - [(procedure? p) - ;; mark root for cycle detection: - (set-promise-val! promise running) - (with-handlers* ([void (lambda (e) - (set-promise-val! promise (lambda () (raise e))) - (raise e))]) - (let-values ([(single? vals*) - (call-with-values p - handle-results)]) - (if single? - (let loop1 ([val* vals*]) - (if (promise? val*) - (let loop2 ([promise* val*]) - (let ([p* (promise-val promise*)]) - (set-promise-val! promise* promise) ; share with root - (cond [(procedure? p*) - (let-values ([(single? vals) - (call-with-values p* - handle-results)]) - (if single? - (loop1 vals) - (begin - (set-promise-val! promise vals) - (apply values vals))))] - [(or (pair? p*) (null? p*)) - (set-promise-val! promise p*) - (apply values p*)] - [(promise? p*) (loop2 p*)] - [else p*]))) - (begin ; error here for "library approach" (see above URL) - (if (or (null? val*) (pair? val*) (procedure? val*)) - (set-promise-val! promise (list val*)) - (set-promise-val! promise val*)) - val*))) - (begin ; error here for "library approach" (see above URL) - (set-promise-val! promise vals*) - (apply values vals*)))))] - [(or (pair? p) (null? p)) (apply values p)] - [(promise? p) (loop (promise-val p))] - [else p])) - ;; different from srfi-45: identity for non-promises - promise)) + (let loop ([p (promise-val promise)]) + (cond + [(procedure? p) + ;; mark root for cycle detection: + (set-promise-val! promise running) + (with-handlers* ([void (lambda (e) + (set-promise-val! promise + (lambda () (raise e))) + (raise e))]) + (let-values ([(single? vals*) (call-with-values p handle-results)]) + (if single? + (let loop1 ([val* vals*]) + (if (promise? val*) + (let loop2 ([promise* val*]) + (let ([p* (promise-val promise*)]) + (set-promise-val! promise* promise) ; share with root + (cond [(procedure? p*) + (let-values ([(single? vals) + (call-with-values + p* handle-results)]) + (if single? + (loop1 vals) + (begin (set-promise-val! promise vals) + (apply values vals))))] + [(or (pair? p*) (null? p*)) + (set-promise-val! promise p*) + (apply values p*)] + [(promise? p*) (loop2 p*)] + [else p*]))) + (begin ; error here for "library approach" (see above URL) + (if (or (null? val*) (pair? val*) (procedure? val*)) + (set-promise-val! promise (list val*)) + (set-promise-val! promise val*)) + val*))) + (begin ; error here for "library approach" (see above URL) + (set-promise-val! promise vals*) + (apply values vals*)))))] + [(or (pair? p) (null? p)) (apply values p)] + [(promise? p) (loop (promise-val p))] + [else p])) + ;; different from srfi-45: identity for non-promises + promise))