From f1b6109b2f34bd937ac553228832c6dfca14b370 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Fri, 3 Jun 2016 02:42:48 +0900 Subject: [PATCH] make a small optimization --- contrib/20.r7rs/scheme/lazy.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contrib/20.r7rs/scheme/lazy.scm b/contrib/20.r7rs/scheme/lazy.scm index f429dcd0..d934ad45 100644 --- a/contrib/20.r7rs/scheme/lazy.scm +++ b/contrib/20.r7rs/scheme/lazy.scm @@ -30,7 +30,11 @@ (let ((v (promise-value p))) (case (promise-state p) ((cached) v) - ((chained) (force v)) + ((chained) (let () + (when (eq? 'cached (promise-state v)) + (set-promise-state! p 'cached) + (set-promise-value! p (promise-value v))) + (force v))) ((pending) (let ((q (v))) (when (eq? 'pending (promise-state p)) (set-promise-state! p 'chained)