diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index 5a2c1b7..4055e41 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -50424,7 +50424,7 @@ Given \verb|("one" "two" "three")| generate \verb|"(one,two,three)"| \end{chunk} \chapter{Browser Support Code} - +\section{Pages Initiated from HyperDoc Pages} \defun{conPage}{conPage} \calls{conPage}{form2HtString} \calls{conPage}{downcase} @@ -50742,6 +50742,8 @@ There are 8 parts of an htPage: \item comments \end{enumerate} +\section{Branches of Constructor Page} + \defun{kiPage}{kiPage} \calls{kiPage}{htpProperty} \calls{kiPage}{mkConform} @@ -51771,6 +51773,8 @@ There are 8 parts of an htPage: \end{chunk} +\section{Operation Page for a Domain Form from Scratch} + \defun{conOpPage}{conOpPage} \calls{conOpPage}{dbCompositeWithMap} \calls{conOpPage}{htpProperty} @@ -51890,6 +51894,8 @@ There are 8 parts of an htPage: \end{chunk} +\section{Operation Page from Main Page} + \defun{koPage}{koPage} \calls{koPage}{htpProperty} \calls{koPage}{concat} @@ -52008,6 +52014,8 @@ There are 8 parts of an htPage: \end{chunk} +\section{Get Constructor Documentation} + \defun{dbConstructorDoc,hn}{dbConstructorDoc,hn} \calls{dbConstructorDoc,hn}{length} \calls{dbConstructorDoc,hn}{sublislis} @@ -52022,6 +52030,261 @@ There are 8 parts of an htPage: \end{chunk} +\defun{dbConstructorDoc,gn}{dbConstructorDoc,gn} +\calls{dbConstructorDoc,gn}{dbConstructorDoc,hn} +\usesdollar{dbConstructorDoc,gn}{op} +\begin{chunk}{defun dbConstructorDoc,gn} +(defun |dbConstructorDoc,gn| (arg) + (let (op alist sig doc) + (declare (special |$op|)) + (setq op (car arg)) + (setq alist (cdr arg)) + (and |$op| + (some #'identity + (loop for item in alist when (|dbConstructorDoc,hn| (car item)) + collect (or (cdr item) '(""))))))) + +\end{chunk} + +\defun{dbConstructorDoc}{dbConstructorDoc} +\calls{dbConstructorDoc}{dbConstructorDoc,fn} +\usesdollar{dbConstructorDoc}{sig} +\usesdollar{dbConstructorDoc}{op} +\begin{chunk}{defun dbConstructorDoc} +(defun |dbConstructorDoc| (conform |$op| |$sig|) + (declare (special |$op| |$sig|)) + (|dbConstructorDoc,fn| conform)) + +\end{chunk} + +\defun{dbDocTable}{dbDocTable} +\calls{dbDocTable}{hget} +\calls{dbDocTable}{make-hashtable} +\calls{dbDocTable}{originsInOrder} +\calls{dbDocTable}{dbAddDocTable} +\usesdollar{dbDocTable}{docTable} +\usesdollar{dbDocTable}{docTableHash} +\begin{chunk}{defun dbDocTable} +(defun |dbDocTable| (conform) + (let (|$docTable| table) + (declare (special |$docTable| |$docTableHash|)) + (cond + ((setq table (hget |$docTableHash| conform)) + table) + (t + (setq |$docTable| (make-hashtable 'id)) + (loop for x in (|originsInOrder| conform) do (|dbAddDocTable| x)) + (|dbAddDocTable| conform) + (hput |$docTableHash| conform |$docTable|) + |$docTable|)))) + +\end{chunk} + +\defun{originsInOrder}{originsInOrder} +\calls{originsInOrder}{getdatabase} +\calls{originsInOrder}{assocleft} +\calls{originsInOrder}{ancestorsOf} +\calls{originsInOrder}{parentsOf} +\calls{originsInOrder}{originsInOrder} +\calls{originsInOrder}{insert} +\begin{chunk}{defun originsInOrder} +(defun |originsInOrder| (conform) + (let (con argl acc) + (setq con (car conform)) + (setq argl (cdr conform)) + (cond + ((eq (getdatabase con 'constructorkind) '|category|) + (assocleft (|ancestorsOf| conform nil))) + (t + (setq acc (assocleft (|parentsOf| con))) + (loop for x in acc do + (loop for y in (|originsInOrder| x) do + (setq acc (|insert| y acc)))) + acc)))) + +\end{chunk} + +\defun{dbAddDocTable}{dbAddDocTable} +\calls{dbAddDocTable}{opOf} +\calls{dbAddDocTable}{getConstructorForm} +\calls{dbAddDocTable}{sublislis} +\calls{dbAddDocTable}{getdatabase} +\calls{dbAddDocTable}{hput} +\calls{dbAddDocTable}{hget} +\usesdollar{dbAddDocTable}{docTable} +\begin{chunk}{defun dbAddDocTable} +(defun |dbAddDocTable| (conform) + (let (conname storedArgs op alist op1 sig doc tmp) + (declare (special |$docTable|)) + (setq conname (|opOf| conform)) + (setq storedArgs (cdr (|getConstructorForm| conname))) + (setq tmp (sublislis (cons '$ (cdr conform)) (cons '% storedArgs) + (getdatabase (|opOf| conform) 'documentation))) + (loop for item in tmp do + (setq op (car item)) + (setq alist (cdr item)) + (setq op1 + (cond + ((eq op '(|Zero|)) 0) + ((eq op '(|One|)) 1) + (t op))) + (loop for item1 in alist do + (setq sig (first item1)) + (setq doc (second item1)) + (hput |$docTable| op1 (cons (cons conform alist) + (hget |$docTable| op1))))))) + +\end{chunk} + +\defun{dbGetDocTable,hn}{dbGetDocTable,hn} +\calls{dbGetDocTable,hn}{sublislis} +\calls{dbGetDocTable,hn}{kdr} +\calls{dbGetDocTable,hn}{qcdr} +\calls{dbGetDocTable,hn}{qcar} +\usesdollar{dbGetDocTable,hn}{which} +\usesdollar{dbGetDocTable,hn}{conform} +\usesdollar{dbGetDocTable,hn}{sig} +\usesdollar{dbGetDocTable,hn}{FormalMapVariableList} +\begin{chunk}{defun dbGetDocTable,hn} +(defun |dbGetDocTable,hn| (arg) + (let (sig doc alteredSig pred r) + (declare (special |$which| |$conform| |$sig| |$FormalMapVariableList|)) + (setq sig (car arg)) + (setq doc (cdr arg)) + (if (string= |$which| "attribute") + (and (consp sig) (eq (qcar sig) '|attribute|) (equal (qcdr sig) |$sig|) + doc) + (progn + (setq pred + (and + (eql (|#| |$sig|) (|#| sig)) + (setq alteredSig + (sublislis (kdr |$conform|) |$FormalMapVariableList| sig)) + (equal alteredSig |$sig|))) + (when (and pred doc + (and (consp doc) (eq (qcar doc) '|constant|)) (qcdr doc) doc) + '("")))))) + +\end{chunk} + +\defun{dbGetDocTable,gn}{dbGetDocTable,gn} +\calls{dbGetDocTable,gn}{lastatom} +\calls{dbGetDocTable,gn}{dbGetDocTable,hn} +\usesdollar{dbGetDocTable,gn}{conform} +\begin{chunk}{defun dbGetDocTable,gn} +(defun |dbGetDocTable,gn| (u) + (let (code p comments) + (declare (special |$conform|)) + (setq |$conform| (car u)) + (when (atom |$conform|) (setq |$conform| (list |$conform|))) + (setq code (lastatom u)) + (setq comments + (some #'identity + (loop for entry in (cdr u) + when (setq p (|dbGetDocTable,hn| entry)) + collect p))) + (when comments (cons |$conform| (cons (car comments) code))))) + +\end{chunk} + +\defun{dbGetDocTable}{dbGetDocTable} +\calls{dbGetDocTable}{stringimage} +\calls{dbGetDocTable}{string2Integer} +\calls{dbGetDocTable}{dbConstructorDoc} +\calls{dbGetDocTable}{qcdr} +\calls{dbGetDocTable}{hget} +\calls{dbGetDocTable}{dbGetDocTable,gn} +\usesdollar{dbGetDocTable}{sig} +\usesdollar{dbGetDocTable}{which} +\usesdollar{dbGetDocTable}{conform} +\usesdollar{dbGetDocTable}{op} +\begin{chunk}{defun dbGetDocTable} +(defun |dbGetDocTable| (op |$sig| docTable |$which| aux) + (declare (special |$sig| |$which|)) + (let (doc origin) + (declare (special |$conform| |$op|)) + (when (and (null (integerp op)) (digitp (elt (setq s (stringimage op)) 0))) + (setq op (|string2Integer| s))) + (cond + ((and (consp aux) (consp (qcar aux))) + (setq doc (|dbConstructorDoc| (car aux) |$op| |$sig|)) + (setq origin (if (qcdr aux) (cons '|ifp| aux) (car aux))) + (cons origin doc)) + (t + (some #'identity + (loop for x in (hget docTable op) + collect (|dbGetDocTable,gn| x))))))) + +\end{chunk} + +\defun{kTestPred}{kTestPred} +\calls{kTestPred}{testBitVector} +\calls{kTestPred}{simpHasPred} +\usesdollar{kTestPred}{predvec} +\usesdollar{kTestPred}{domain} +\begin{chunk}{defun kTestPred} +(defun |kTestPred| (n) + (declare (special |$predvec| |$domain|)) + (cond + ((eql n 0) t) + (|$domain| (|testBitVector| |$predvec| n)) + (t (|simpHasPred| (elt |$predvec| (1- n)))))) + +\end{chunk} + +\defun{dbAddChainDomain}{dbAddChainDomain} +\calls{dbAddChainDomain}{dbInfovec} +\calls{dbAddChainDomain}{dbSubConform} +\calls{dbAddChainDomain}{kFormatSlotDomain} +\calls{dbAddChainDomain}{devaluate} +\usesdollar{dbAddChainDomain}{infovec} +\begin{chunk}{defun dbAddChainDomain} +(defun |dbAddChainDomain| (conform) + (let (name args template form) + (declare (special |$infovec|)) + (setq name (car conform)) + (setq args (cdr conform)) + (setq |$infovec| (|dbInfovec| name)) + (when |$infovec| + (setq template (elt |$infovec| 0)) + (when (setq form (elt template 5)) + (|dbSubConform| args (|kFormatSlotDomain| (|devaluate| form))))))) + +\end{chunk} + +\defun{dbSubConform}{dbSubConform} +\calls{dbSubConform}{position} +\calls{dbSubConform}{dbSubConform} +\usesdollar{dbSubConform}{FormalMapVariableList} +\begin{chunk}{defun dbSubConform} +(defun |dbSubConform| (args u) + (let (n y) + (declare (special |$FormalMapVariableList|)) + (cond + ((atom u) + (if (>= (setq n (|position| u |$FormalMapVariableList|)) 0) + (elt args n) + u)) + ((and (consp u) (eq (car u) '|local|) (consp (cdr u)) (eq (cddr u) nil)) + (setq y (cadr u)) + (|dbSubConform| args y)) + (t + (loop for x in u collect (|dbSubConform| args x)))))) + +\end{chunk} + +\defun{dbAddChain}{dbAddChain} +\calls{dbAddChain}{dbAddChainDomain} +\calls{dbAddChain}{dbAddChain} +\begin{chunk}{defun dbAddChain} +(defun |dbAddChain| (conform) + (let (u) + (when (setq u (|dbAddChainDomain| conform)) + (unless (atom u) + (cons (cons u t) (|dbAddChain| u)))))) + +\end{chunk} + \chapter{The Interpreter} \begin{chunk}{Interpreter} (setq *print-array* nil) @@ -52620,11 +52883,21 @@ There are 8 parts of an htPage: \getchunk{defun countCache} \getchunk{defun DaaseName} +\getchunk{defun dbAddChain} +\getchunk{defun dbAddChainDomain} +\getchunk{defun dbAddDocTable} \getchunk{defun dbCompositeWithMap} +\getchunk{defun dbConstructorDoc} \getchunk{defun dbConstructorDoc,hn} +\getchunk{defun dbConstructorDoc,gn} +\getchunk{defun dbDocTable} \getchunk{defun dbExtractUnderlyingDomain} +\getchunk{defun dbGetDocTable} +\getchunk{defun dbGetDocTable,gn} +\getchunk{defun dbGetDocTable,hn} \getchunk{defun dbNonEmptyPattern} \getchunk{defun dbSearchOrder} +\getchunk{defun dbSubConform} \getchunk{defun decideHowMuch} \getchunk{defun defaultTargetFE} \getchunk{defun defiostream} @@ -53024,6 +53297,7 @@ There are 8 parts of an htPage: \getchunk{defun koPageInputAreaUnchanged?} \getchunk{defun ksPage} \getchunk{defun kcuPage} +\getchunk{defun kTestPred} \getchunk{defun lassocSub} \getchunk{defun lastTokPosn} @@ -53390,6 +53664,7 @@ There are 8 parts of an htPage: \getchunk{defun optionError} \getchunk{defun optionUserLevelError} \getchunk{defun orderBySlotNumber} +\getchunk{defun originsInOrder} \getchunk{defun parseAndEval} \getchunk{defun parseAndEval1} diff --git a/changelog b/changelog index b5fbe06..2470b64 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +20130618 tpd src/axiom-website/patches.html 20130618.01.tpd.patch +20130618 tpd src/interp/br-con.lisp move code to bookvol5 +20130618 tpd books/bookvol5 move code from br-con.lisp 20130613 tpd src/axiom-website/patches.html 20130613.02.tpd.patch 20130613 tpd src/interp/br-con.lisp move code to bookvol5 20130613 tpd books/bookvol5 move code from br-con.lisp diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 7933b09..b1c4321 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -4210,6 +4210,8 @@ books/bookvol8.1 add crc test section 2.5, 2.6, 2.7 books/bookvol8.1 add crc test section 2.8, 2.9 20130613.02.tpd.patch books/bookvol5 move code from br-con.lisp +20130618.01.tpd.patch +books/bookvol5 move code from br-con.lisp diff --git a/src/interp/br-con.lisp.pamphlet b/src/interp/br-con.lisp.pamphlet index 1c1bf04..995f5c0 100644 --- a/src/interp/br-con.lisp.pamphlet +++ b/src/interp/br-con.lisp.pamphlet @@ -13,428 +13,6 @@ (IN-PACKAGE "BOOT" ) ;--======================================================================= -;-- Get Constructor Documentation -;--======================================================================= -;dbConstructorDoc(conform,$op,$sig) == fn conform where -; fn (conform := [conname,:$args]) == -; or/[gn y for y in GETDATABASE(conname,'DOCUMENTATION)] -; gn([op,:alist]) == -; op = $op and or/[doc or '("") for [sig,:doc] in alist | hn sig] -; hn sig == -; #$sig = #sig and $sig = SUBLISLIS($args,$FormalMapVariableList,sig) - -(DEFUN |dbConstructorDoc,gn| (G167206) - (PROG (|op| |alist| |sig| |doc|) - (declare (special |$op|)) - (RETURN - (SEQ (PROGN - (SPADLET |op| (CAR G167206)) - (SPADLET |alist| (CDR G167206)) - G167206 - (AND (BOOT-EQUAL |op| |$op|) - (PROG (G167218) - (SPADLET G167218 NIL) - (RETURN - (DO ((G167226 NIL G167218) - (G167227 |alist| (CDR G167227)) - (G167199 NIL)) - ((OR G167226 (ATOM G167227) - (PROGN - (SETQ G167199 (CAR G167227)) - NIL) - (PROGN - (PROGN - (SPADLET |sig| (CAR G167199)) - (SPADLET |doc| (CDR G167199)) - G167199) - NIL)) - G167218) - (SEQ (EXIT (COND - ((|dbConstructorDoc,hn| |sig|) - (SETQ G167218 - (OR G167218 (OR |doc| '("")) - ))))))))))))))) - -(DEFUN |dbConstructorDoc,fn| (|conform|) - (PROG (|conname|) - (declare (special |$args|)) - (RETURN - (SEQ (PROGN - (SPADLET |conname| (CAR |conform|)) - (SPADLET |$args| (CDR |conform|)) - |conform| - (PROG (G167251) - (SPADLET G167251 NIL) - (RETURN - (DO ((G167257 NIL G167251) - (G167258 (GETDATABASE |conname| 'DOCUMENTATION) - (CDR G167258)) - (|y| NIL)) - ((OR G167257 (ATOM G167258) - (PROGN (SETQ |y| (CAR G167258)) NIL)) - G167251) - (SEQ (EXIT (SETQ G167251 - (OR G167251 - (|dbConstructorDoc,gn| |y|))))))))))))) - -(DEFUN |dbConstructorDoc| (|conform| |$op| |$sig|) - (DECLARE (SPECIAL |$op| |$sig|)) - (|dbConstructorDoc,fn| |conform|)) - -;dbDocTable conform == -;--assumes $docTableHash bound --see dbExpandOpAlistIfNecessary -; table := HGET($docTableHash,conform) => table -; $docTable : local := MAKE_-HASHTABLE 'ID -; --process in reverse order so that closest cover up farthest -; for x in originsInOrder conform repeat dbAddDocTable x -; dbAddDocTable conform -; HPUT($docTableHash,conform,$docTable) -; $docTable - -(DEFUN |dbDocTable| (|conform|) - (PROG (|$docTable| |table|) - (DECLARE (SPECIAL |$docTable| |$docTableHash|)) - (RETURN - (SEQ (COND - ((SPADLET |table| (HGET |$docTableHash| |conform|)) - |table|) - ('T (SPADLET |$docTable| (MAKE-HASHTABLE 'ID)) - (DO ((G167280 (|originsInOrder| |conform|) - (CDR G167280)) - (|x| NIL)) - ((OR (ATOM G167280) - (PROGN (SETQ |x| (CAR G167280)) NIL)) - NIL) - (SEQ (EXIT (|dbAddDocTable| |x|)))) - (|dbAddDocTable| |conform|) - (HPUT |$docTableHash| |conform| |$docTable|) |$docTable|)))))) - -;originsInOrder conform == --domain = nil or set to live domain -;--from dcCats -; [con,:argl] := conform -; GETDATABASE(con,'CONSTRUCTORKIND) = 'category => -; ASSOCLEFT ancestorsOf(conform,nil) -; acc := ASSOCLEFT parentsOf con -; for x in acc repeat -; for y in originsInOrder x repeat acc := insert(y,acc) -; acc - -(DEFUN |originsInOrder| (|conform|) - (PROG (|con| |argl| |acc|) - (RETURN - (SEQ (PROGN - (SPADLET |con| (CAR |conform|)) - (SPADLET |argl| (CDR |conform|)) - (COND - ((BOOT-EQUAL (GETDATABASE |con| 'CONSTRUCTORKIND) - '|category|) - (ASSOCLEFT (|ancestorsOf| |conform| NIL))) - ('T (SPADLET |acc| (ASSOCLEFT (|parentsOf| |con|))) - (DO ((G167300 |acc| (CDR G167300)) (|x| NIL)) - ((OR (ATOM G167300) - (PROGN (SETQ |x| (CAR G167300)) NIL)) - NIL) - (SEQ (EXIT (DO ((G167309 (|originsInOrder| |x|) - (CDR G167309)) - (|y| NIL)) - ((OR (ATOM G167309) - (PROGN - (SETQ |y| (CAR G167309)) - NIL)) - NIL) - (SEQ (EXIT - (SPADLET |acc| - (|insert| |y| |acc|)))))))) - |acc|))))))) - -;dbAddDocTable conform == -; conname := opOf conform -; storedArgs := rest getConstructorForm conname -; for [op,:alist] in SUBLISLIS(["$",:rest conform], -; ["%",:storedArgs],GETDATABASE(opOf conform,'DOCUMENTATION)) -; repeat -; op1 := -; op = '(Zero) => 0 -; op = '(One) => 1 -; op -; for [sig,doc] in alist repeat -; HPUT($docTable,op1,[[conform,:alist],:HGET($docTable,op1)]) - -(DEFUN |dbAddDocTable| (|conform|) - (PROG (|conname| |storedArgs| |op| |alist| |op1| |sig| |doc|) - (declare (special |$docTable|)) - (RETURN - (SEQ (PROGN - (SPADLET |conname| (|opOf| |conform|)) - (SPADLET |storedArgs| - (CDR (|getConstructorForm| |conname|))) - (DO ((G167342 - (SUBLISLIS (CONS '$ (CDR |conform|)) - (CONS '% |storedArgs|) - (GETDATABASE (|opOf| |conform|) - 'DOCUMENTATION)) - (CDR G167342)) - (G167328 NIL)) - ((OR (ATOM G167342) - (PROGN (SETQ G167328 (CAR G167342)) NIL) - (PROGN - (PROGN - (SPADLET |op| (CAR G167328)) - (SPADLET |alist| (CDR G167328)) - G167328) - NIL)) - NIL) - (SEQ (EXIT (PROGN - (SPADLET |op1| - (COND - ((BOOT-EQUAL |op| '(|Zero|)) 0) - ((BOOT-EQUAL |op| '(|One|)) 1) - ('T |op|))) - (DO ((G167353 |alist| (CDR G167353)) - (G167323 NIL)) - ((OR (ATOM G167353) - (PROGN - (SETQ G167323 (CAR G167353)) - NIL) - (PROGN - (PROGN - (SPADLET |sig| - (CAR G167323)) - (SPADLET |doc| - (CADR G167323)) - G167323) - NIL)) - NIL) - (SEQ (EXIT - (HPUT |$docTable| |op1| - (CONS (CONS |conform| |alist|) - (HGET |$docTable| |op1|))))))))))))))) - -; --note opOf is needed!!! for some reason, One and Zero appear within prens -;dbGetDocTable(op,$sig,docTable,$which,aux) == main where -;--docTable is [[origin,entry1,...,:code] ...] where -;-- each entry is [sig,doc] and code is NIL or else a topic code for op -; main == -; if null FIXP op and -; DIGITP (s := STRINGIMAGE op).0 then op := string2Integer s -; -- the above hack should be removed after 3/94 when 0 is not |0| -; aux is [[packageName,:.],:pred] => -; doc := dbConstructorDoc(first aux,$op,$sig) -; origin := -; pred => ['ifp,:aux] -; first aux -; [origin,:doc] -; or/[gn x for x in HGET(docTable,op)] -; gn u == --u is [origin,entry1,...,:code] -; $conform := CAR u --origin -; if ATOM $conform then $conform := [$conform] -; code := LASTATOM u --optional topic code -; comments := or/[p for entry in CDR u | p := hn entry] or return nil -; [$conform,first comments,:code] -; hn [sig,:doc] == -; $which = '"attribute" => sig is ['attribute,: =$sig] and doc -; pred := #$sig = #sig and -; alteredSig := SUBLISLIS(KDR $conform,$FormalMapVariableList,sig) -; alteredSig = $sig -; pred => -; doc => -; doc is ['constant,:r] => r -; doc -; '("") -; false - -(DEFUN |dbGetDocTable,hn| (G167382) - (PROG (|sig| |doc| |alteredSig| |pred| |r|) - (declare (special |$which| |$conform| |$sig| |$FormalMapVariableList|)) - (RETURN - (SEQ (PROGN - (SPADLET |sig| (CAR G167382)) - (SPADLET |doc| (CDR G167382)) - G167382 - (SEQ (IF (BOOT-EQUAL |$which| "attribute") - (EXIT (AND (AND (CONSP |sig|) - (EQ (QCAR |sig|) '|attribute|) - (EQUAL (QCDR |sig|) |$sig|)) - |doc|))) - (SPADLET |pred| - (AND (BOOT-EQUAL (|#| |$sig|) (|#| |sig|)) - (SEQ (SPADLET |alteredSig| - (SUBLISLIS (KDR |$conform|) - |$FormalMapVariableList| |sig|)) - (EXIT - (BOOT-EQUAL |alteredSig| |$sig|))))) - (IF |pred| - (EXIT (SEQ (IF |doc| - (EXIT - (SEQ - (IF - (AND (CONSP |doc|) - (EQ (QCAR |doc|) '|constant|) - (PROGN - (SPADLET |r| (QCDR |doc|)) - 'T)) - (EXIT |r|)) - (EXIT |doc|)))) - (EXIT '(""))))) - (EXIT NIL))))))) - -(DEFUN |dbGetDocTable,gn| (|u|) - (PROG (|code| |p| |comments|) - (declare (special |$conform|)) - (RETURN - (SEQ (SPADLET |$conform| (CAR |u|)) - (IF (ATOM |$conform|) - (SPADLET |$conform| (CONS |$conform| NIL)) NIL) - (SPADLET |code| (LASTATOM |u|)) - (SPADLET |comments| - (OR (PROG (G167401) - (SPADLET G167401 NIL) - (RETURN - (DO ((G167408 NIL G167401) - (G167409 (CDR |u|) (CDR G167409)) - (|entry| NIL)) - ((OR G167408 (ATOM G167409) - (PROGN - (SETQ |entry| (CAR G167409)) - NIL)) - G167401) - (SEQ (EXIT - (COND - ((SPADLET |p| - (|dbGetDocTable,hn| |entry|)) - (SETQ G167401 - (OR G167401 |p|))))))))) - (RETURN NIL))) - (EXIT (CONS |$conform| (CONS (CAR |comments|) |code|))))))) - -(DEFUN |dbGetDocTable| (|op| |$sig| |docTable| |$which| |aux|) - (DECLARE (SPECIAL |$sig| |$which|)) - (PROG (|s| |ISTMP#1| |packageName| |pred| |doc| |origin|) - (declare (special |$conform| |$op|)) - (RETURN - (SEQ (PROGN - (COND - ((AND (NULL (integerp |op|)) - (DIGITP (ELT (SPADLET |s| (STRINGIMAGE |op|)) 0))) - (SPADLET |op| (|string2Integer| |s|)))) - (COND - ((AND (CONSP |aux|) - (PROGN - (SPADLET |ISTMP#1| (QCAR |aux|)) - (AND (CONSP |ISTMP#1|) - (PROGN - (SPADLET |packageName| (QCAR |ISTMP#1|)) - 'T))) - (PROGN (SPADLET |pred| (QCDR |aux|)) 'T)) - (SPADLET |doc| - (|dbConstructorDoc| (CAR |aux|) |$op| |$sig|)) - (SPADLET |origin| - (COND - (|pred| (CONS '|ifp| |aux|)) - ('T (CAR |aux|)))) - (CONS |origin| |doc|)) - ('T - (PROG (G167432) - (SPADLET G167432 NIL) - (RETURN - (DO ((G167438 NIL G167432) - (G167439 (HGET |docTable| |op|) - (CDR G167439)) - (|x| NIL)) - ((OR G167438 (ATOM G167439) - (PROGN (SETQ |x| (CAR G167439)) NIL)) - G167432) - (SEQ (EXIT (SETQ G167432 - (OR G167432 - (|dbGetDocTable,gn| |x|))))))))))))))) - -;kTestPred n == -; n = 0 => true -; $domain => testBitVector($predvec,n) -; simpHasPred $predvec.(n - 1) - -(DEFUN |kTestPred| (|n|) - (declare (special |$predvec| |$domain|)) - (COND - ((EQL |n| 0) 'T) - (|$domain| (|testBitVector| |$predvec| |n|)) - ('T (|simpHasPred| (ELT |$predvec| (SPADDIFFERENCE |n| 1)))))) - -;dbAddChainDomain conform == -; [name,:args] := conform -; $infovec := dbInfovec name or return nil --exit for categories -; template := $infovec . 0 -; null (form := template . 5) => nil -; dbSubConform(args,kFormatSlotDomain devaluate form) - -(DEFUN |dbAddChainDomain| (|conform|) - (PROG (|name| |args| |template| |form|) - (declare (special |$infovec|)) - (RETURN - (PROGN - (SPADLET |name| (CAR |conform|)) - (SPADLET |args| (CDR |conform|)) - (SPADLET |$infovec| (OR (|dbInfovec| |name|) (RETURN NIL))) - (SPADLET |template| (ELT |$infovec| 0)) - (COND - ((NULL (SPADLET |form| (ELT |template| 5))) NIL) - ('T - (|dbSubConform| |args| - (|kFormatSlotDomain| (|devaluate| |form|))))))))) - -;dbSubConform(args,u) == -; atom u => -; (n := position(u,$FormalMapVariableList)) >= 0 => args . n -; u -; u is ['local,y] => dbSubConform(args,y) -; [dbSubConform(args,x) for x in u] - -(DEFUN |dbSubConform| (|args| |u|) - (PROG (|n| |ISTMP#1| |y|) - (RETURN - (SEQ (COND - ((ATOM |u|) - (COND - ((>= (SPADLET |n| - (|position| |u| |$FormalMapVariableList|)) - 0) - (ELT |args| |n|)) - ('T |u|))) - ((AND (CONSP |u|) (EQ (QCAR |u|) '|local|) - (PROGN - (SPADLET |ISTMP#1| (QCDR |u|)) - (AND (CONSP |ISTMP#1|) (EQ (QCDR |ISTMP#1|) NIL) - (PROGN (SPADLET |y| (QCAR |ISTMP#1|)) 'T)))) - (|dbSubConform| |args| |y|)) - ('T - (PROG (G167484) - (SPADLET G167484 NIL) - (RETURN - (DO ((G167489 |u| (CDR G167489)) (|x| NIL)) - ((OR (ATOM G167489) - (PROGN (SETQ |x| (CAR G167489)) NIL)) - (NREVERSE0 G167484)) - (SEQ (EXIT (SETQ G167484 - (CONS (|dbSubConform| |args| |x|) - G167484))))))))))))) - -;dbAddChain conform == -; u := dbAddChainDomain conform => -; atom u => nil -; [[u,:true],:dbAddChain u] -; nil - -(DEFUN |dbAddChain| (|conform|) - (PROG (|u|) - (RETURN - (COND - ((SPADLET |u| (|dbAddChainDomain| |conform|)) - (COND - ((ATOM |u|) NIL) - ('T (CONS (CONS |u| 'T) (|dbAddChain| |u|))))) - ('T NIL))))) - -;--======================================================================= ;-- Constructor Page Menu ;--======================================================================= ;dbShowCons(htPage,key,:options) ==