diff options
author | dos-reis <gdr@axiomatics.org> | 2011-08-25 15:59:44 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-08-25 15:59:44 +0000 |
commit | cd5a921db34f465d1dc8fbd2061d9077f64434cf (patch) | |
tree | b6dc636c5fa79035999de79dbb12c2f31c358547 /src/interp/define.boot | |
parent | c25dfacda02a40b2055328ba5898086c043e5427 (diff) | |
download | open-axiom-cd5a921db34f465d1dc8fbd2061d9077f64434cf.tar.gz |
* interp/hashcode.boot: Remove.
*interp/interop.boot: Move OpenAxiom relevant code to define.boot
and nrunfast.boot. Remove.
Diffstat (limited to 'src/interp/define.boot')
-rw-r--r-- | src/interp/define.boot | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/interp/define.boot b/src/interp/define.boot index 048efb2f..f4675b08 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -466,6 +466,20 @@ makeCompactSigCode sig == [fn for x in sig] where --======================================================================= -- Generate Slot 4 Constructor Vectors --======================================================================= +depthAssocList u == + u := removeSymbol(u,'DomainSubstitutionMacro) --hack by RDJ 8/90 + removeDuplicates ("append"/[depthAssoc(y) for y in u]) + +depthAssoc x == + y := tableValue($depthAssocCache,x) => y + x is ['Join,:u] or (u := getCatAncestors x) => + v := depthAssocList u + tableValue($depthAssocCache,x) := [[x,:n],:v] + where n() == 1 + "MAX"/[rest y for y in v] + tableValue($depthAssocCache,x) := [[x,:0]] + +getCatAncestors x == [CAAR y for y in parentsOf opOf x] + NRTmakeCategoryAlist() == $depthAssocCache: local := hashTable 'EQ $catAncestorAlist: local := nil |