diff options
author | dos-reis <gdr@axiomatics.org> | 2011-10-30 20:09:18 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-10-30 20:09:18 +0000 |
commit | 91e29dea40e9ca5a2d7d566bdc91c9542492ac14 (patch) | |
tree | 9487e0c1b9a18a6a78de5efcf97722cebab2d2c6 /src/interp/database.boot | |
parent | d76c902f18d1ee40c52372c37336631c0f81bfc8 (diff) | |
download | open-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.boot | 11 |
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 |