From 010633b20de9643ac34409552bbbb4366038ecf7 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Wed, 9 Mar 2011 06:58:27 +0000 Subject: * interp/g-opt.boot (semiSimpleRelativeTo?): Consider conditionals. --- src/interp/g-opt.boot | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/interp') diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot index ad5d7b84..b7a72aca 100644 --- a/src/interp/g-opt.boot +++ b/src/interp/g-opt.boot @@ -463,8 +463,11 @@ $simpleVMoperators == ++ to the list of operators `ops'. semiSimpleRelativeTo?(form,ops) == atomic? form => true - form isnt [op,:args] or not symbol? op or not MEMQ(op,ops) => false - and/[semiSimpleRelativeTo?(f,ops) for f in args] + not symbol?(form.op) or not MEMQ(form.op,ops) => false + form.op is '%when => + and/[sideEffectFree? p and semiSimpleRelativeTo?(c,ops) + for [p,c] in form.args] + and/[semiSimpleRelativeTo?(f,ops) for f in form.args] ++ Return true if `form' os a side-effect free form. sideEffectFree? form == -- cgit v1.2.3