diff options
author | dos-reis <gdr@axiomatics.org> | 2011-08-11 14:12:54 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2011-08-11 14:12:54 +0000 |
commit | a1de530b8c7a40177f1e8c0ebf84d8e9359ef503 (patch) | |
tree | 07f84445aaca4d4eebf6ee2f8d2583fe1a058066 /src/interp | |
parent | 7d8802bb51e5f907e661469b94bf352766d7ffde (diff) | |
download | open-axiom-a1de530b8c7a40177f1e8c0ebf84d8e9359ef503.tar.gz |
* interp/define.boot (extendsCategoryBasic): Handle attribute
third argument too.
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/define.boot | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/interp/define.boot b/src/interp/define.boot index 493d87de..c854eb27 100644 --- a/src/interp/define.boot +++ b/src/interp/define.boot @@ -320,15 +320,20 @@ extendsCategory(dom,u,v,env) == extendsCategoryBasic(dom,u,v,env) == v is ['IF,p,['ATTRIBUTE,c],.] => - uVec := compMakeCategoryObject(u,env).expr + uVec := compMakeCategoryObject(u,env).expr or return false cons? c and isCategoryForm(c,env) => LASSOC(c,second categoryHierarchy uVec) is [=p,:.] LASSOC(c,categoryAttributes uVec) is [=p,:.] u is ["Join",:l] => or/[extendsCategoryBasic(dom,x,v,env) for x in l] u = v => true + v is ['ATTRIBUTE,c] => + cons? c and isCategoryForm(c,env) => extendsCategoryBasic(dom,u,c,env) + u is ['CATEGORY,.,:l] => or/[extendsCategoryBasic(dom,x,v,env) for x in l] + uVec := compMakeCategoryObject(u,env).expr or return false + LASSOC(c,categoryAttributes uVec) is [=true] isCategoryForm(v,env) => catExtendsCat?(u,v,env) v is ['SIGNATURE,op,sig] => - uVec := compMakeCategoryObject(u,env).expr + uVec := compMakeCategoryObject(u,env).expr or return false or/[categoryRef(uVec,i) is [[=op,=sig],:.] for i in 6..maxIndex uVec] u is ['CATEGORY,.,:l] => v is ['IF,:.] => listMember?(v,l) |