From 1371fe9b149da699320567e5160160169ecdb0be Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 25 Feb 2010 00:32:40 +0100 Subject: [PATCH] eval.scm's handling of with-fluids doesn't leave the VM * module/ice-9/eval.scm (primitive-eval): Implement with-fluids in terms of with-fluids, to avoid recursively calling the VM via with-fluids*. --- module/ice-9/eval.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/module/ice-9/eval.scm b/module/ice-9/eval.scm index f7cb6ce3e..e38f2df67 100644 --- a/module/ice-9/eval.scm +++ b/module/ice-9/eval.scm @@ -307,7 +307,11 @@ (('with-fluids (fluids vals . exp)) (let* ((fluids (map (lambda (x) (eval x env)) fluids)) (vals (map (lambda (x) (eval x env)) vals))) - (with-fluids* fluids vals (lambda () (eval exp env))))) + (let lp ((fluids fluids) (vals vals)) + (if (null? fluids) + (eval exp env) + (with-fluids (((car fluids) (car vals))) + (lp (cdr fluids) (cdr vals))))))) (('prompt (tag exp . handler)) (@prompt (eval tag env) -- 2.20.1