aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-03-09 06:58:27 +0000
committerdos-reis <gdr@axiomatics.org>2011-03-09 06:58:27 +0000
commit010633b20de9643ac34409552bbbb4366038ecf7 (patch)
tree414556ed7a3c8460375f47eaa247bea495296901 /src/interp
parent5a879844f45fd5b566ef61bb3cc9b2a2a0a5c3a7 (diff)
downloadopen-axiom-010633b20de9643ac34409552bbbb4366038ecf7.tar.gz
* interp/g-opt.boot (semiSimpleRelativeTo?): Consider conditionals.
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/g-opt.boot7
1 files changed, 5 insertions, 2 deletions
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 ==