aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-06-04 18:26:33 +0000
committerdos-reis <gdr@axiomatics.org>2010-06-04 18:26:33 +0000
commitbd67b8d8c796161376a6268c54f4d10fb0412e07 (patch)
tree8c60ab486096a0c62d2823e44b7f69e1680cdd27 /src/interp
parent69ad281c414918448007110d80e0e2971cfde6e4 (diff)
downloadopen-axiom-bd67b8d8c796161376a6268c54f4d10fb0412e07.tar.gz
* interp/buildom.boot (UnionEqual): Don't COERCE to FUNCTION. Use
eval. (coerceUn2E): Likewise.
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/buildom.boot4
-rw-r--r--src/interp/g-util.boot3
2 files changed, 4 insertions, 3 deletions
diff --git a/src/interp/buildom.boot b/src/interp/buildom.boot
index b76c110a..c242faf2 100644
--- a/src/interp/buildom.boot
+++ b/src/interp/buildom.boot
@@ -183,7 +183,7 @@ UnionEqual(x, y, dom) ==
predlist := mkPredList branches
same := false
for b in stripUnionTags branches for p in predlist while not same repeat
- typeFun := COERCE(["LAMBDA", '(_#1), p],"FUNCTION")
+ typeFun := eval ['%lam,'(_#1),p]
FUNCALL(typeFun,x) and FUNCALL(typeFun,y) =>
string? b => same := (x = y)
if p is ["EQCAR", :.] then (x := rest x; y := rest y)
@@ -197,7 +197,7 @@ coerceUn2E(x,source) ==
predlist := mkPredList branches
byGeorge := byJane := gensym()
for b in stripUnionTags branches for p in predlist repeat
- typeFun := COERCE(["LAMBDA", '(_#1), p],"FUNCTION")
+ typeFun := eval ['%lam,'(_#1),p]
if FUNCALL(typeFun,x) then return
if p is ["EQCAR", :.] then x := rest x
-- string? b => return x -- to catch "failed" etc.
diff --git a/src/interp/g-util.boot b/src/interp/g-util.boot
index 05abd896..957d676a 100644
--- a/src/interp/g-util.boot
+++ b/src/interp/g-util.boot
@@ -322,7 +322,8 @@ for x in [
['%string?, :'STRINGP],
-- general utility
- ['%hash,:'SXHASH]
+ ['%hash,:'SXHASH],
+ ['%lam, :'LAMBDA]
] repeat property(first x,'%Rename) := rest x
++ Table of opcode-expander pairs.