aboutsummaryrefslogtreecommitdiff
path: root/src/interp/database.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-10-30 20:09:18 +0000
committerdos-reis <gdr@axiomatics.org>2011-10-30 20:09:18 +0000
commit91e29dea40e9ca5a2d7d566bdc91c9542492ac14 (patch)
tree9487e0c1b9a18a6a78de5efcf97722cebab2d2c6 /src/interp/database.boot
parentd76c902f18d1ee40c52372c37336631c0f81bfc8 (diff)
downloadopen-axiom-91e29dea40e9ca5a2d7d566bdc91c9542492ac14.tar.gz
* interp/define.boot (compDefineCategory2): Compute dual signature
early on. * interp/database.boot (modemapsFromCategory): Take a first argument as a DB. Tidy. Adjust caller.
Diffstat (limited to 'src/interp/database.boot')
-rw-r--r--src/interp/database.boot11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/interp/database.boot b/src/interp/database.boot
index b68c659b..e24d6a2b 100644
--- a/src/interp/database.boot
+++ b/src/interp/database.boot
@@ -179,7 +179,7 @@ getConstructorKind ctor ==
++ of operators exported by generic instantiation of the category constructor.
++ Note: The structure of the modemaps is that understood by the
++ interpreter, but that of the of the compiler.
-modemapsFromCategory(form,body,signature) ==
+modemapsFromCategory(db,form,body,signature) ==
sl := [["$",:"*1"],:pairList(form.args,rest $PatternVariableList)]
form := applySubst(sl,form)
body := applySubst(sl,body)
@@ -187,11 +187,10 @@ modemapsFromCategory(form,body,signature) ==
opAlist := applySubst(sl,categoryExports $domainShell) or return nil
nonCategorySigAlist :=
mkAlistOfExplicitCategoryOps substitute("*1","$",body)
- domainList :=
- [[a,m] for a in form.args for m in signature.source |
- isCategoryForm(m,$EmptyEnvironment)]
- catPredList := [['ofCategory,:u] for u in [["*1",form],:domainList]]
- op := form.op
+ catPredList := [['ofCategory,"*1",form],
+ :[['ofCategory,a,m] for a in form.args for m in signature.source
+ for cat? in dbDualSignature(db).source | cat? ]]
+ op := dbConstructor db
mms := nil
for (entry:= [[op,sig,:.],pred,sel]) in opAlist |
listMember?(sig,LASSOC(op,nonCategorySigAlist)) repeat