diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index a5eed76..f9479e0 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -462,7 +462,7 @@ itself (don't break this) and never exits. When a lisp image containing code is reloaded there is a hook to allow a function to be called. In our case it is the restart function which is the entry to the Axiom interpreter. -<>= +<>= (defun set-restart-hook () "Set the restart hook" #+KCL (setq system::*top-level-hook* 'restart) @@ -684,7 +684,7 @@ information is initialized. @ \defun{resetStackLimits}{Reset the stack limits} \calls{resetStackLimits}{reset-stack-limits} -<>= +<>= (defun |resetStackLimits| () "Reset the stack limits" (system:reset-stack-limits)) @@ -986,7 +986,7 @@ will end up as a recursive call to ourselves. \section{Helper Functions} \defunsec{getenviron}{Get the value of an evironment variable} \calls{getenviron}{getenv} -<>= +<>= (defun getenviron (var) "Get the value of an evironment variable" #+allegro (sys::getenv (string var)) @@ -1112,7 +1112,7 @@ This function performs those setup commands. \calls{init-memory-config}{allocate-contiguous-pages} \calls{init-memory-config}{allocate-relocatable-pages} \calls{init-memory-config}{set-hole-size} -<>= +<>= (defun init-memory-config (&key (cons 500) (fixnum 200) @@ -1162,7 +1162,7 @@ of the {\bf AXIOM} shell variable at build time) if we can't. If the prefix string is the same as the whole string initial characters --R(ignoring spaces in the whole string) then we return the whole string minus any leading spaces. -<>= +<>= (defun |intloopPrefix?| (prefix whole) "Does the string start with this prefix?" (let ((newprefix (string-left-trim '(#\space) prefix)) @@ -1186,7 +1186,7 @@ This is used to hande {\tt )lisp} top level commands @ \defunsec{get-current-directory}{Get the current directory} -<>= +<>= (defun get-current-directory () "Get the current directory" (namestring (truename ""))) @@ -1196,7 +1196,7 @@ This is used to hande {\tt )lisp} top level commands \defunsec{make-absolute-filename}{Prepend the absolute path to a filename} Prefix a filename with the {\bf AXIOM} shell variable. \usesdollar{make-absolute-filename}{spadroot} -<>= +<>= (defun make-absolute-filename (name) "Prepend the absolute path to a filename" (declare (special $spadroot)) @@ -1207,7 +1207,7 @@ Prefix a filename with the {\bf AXIOM} shell variable. \defunsec{makeInitialModemapFrame}{Make the initial modemap frame} \calls{makeInitialModemapFrame}{copy} \usesdollar{makeInitialModemapFrame}{InitialModemapFrame} -<>= +<>= (defun |makeInitialModemapFrame| () "Make the initial modemap frame" (declare (special |$InitialModemapFrame|)) @@ -1219,7 +1219,7 @@ Prefix a filename with the {\bf AXIOM} shell variable. The ncloopEscaped function will return true if the last non-blank character of a line is an underscore, the Axiom line-continuation character. Otherwise, it returns nil. -<>= +<>= (defun |ncloopEscaped| (x) (let ((l (length x))) (dotimes (i l) @@ -1298,7 +1298,7 @@ character. Otherwise, it returns nil. \defunsec{reclaim}{Call the garbage collector} Call the garbage collector on various platforms. -<>= +<>= #+abcl (defun reclaim () "Call the garbage collector" (ext::gc)) #+:allegro @@ -1413,7 +1413,7 @@ Note I suspect the last two cases do not occur in practice since they result in a dotted pair if the input is not a cons. However, this is what the current code does so I won't change it. \usesdollar{setCurrentLine}{currentLine} -<>= +<>= (defun |setCurrentLine| (s) (declare (special |$currentLine|)) (cond @@ -2195,7 +2195,7 @@ It is controlled with the {\tt )se me any} command. \defun{printAsTeX}{printAsTeX} \usesdollar{printAsTeX}{texOutputStream} -<>= +<>= (defun |printAsTeX| (x) (declare (special |$texOutputStream|)) (princ x |$texOutputStream|)) @@ -2208,7 +2208,7 @@ sameUnionBranch(uArg, m) == uArg is [":", ., t] => t = m uArg = m \end{verbatim} -<>= +<>= (defun |sameUnionBranch| (uArg m) (let (t1 t2 t3) (cond @@ -2428,7 +2428,7 @@ phParse: carrier[tokens,...] -> carrier[ptree, tokens,...] \defun{packageTran}{packageTran} \calls{packageTran}{packageTran} -<>= +<>= (defun |packageTran| (sex) (cond ((symbolp sex) @@ -2499,7 +2499,7 @@ carrier[lines,messages,..]-> carrier[lines,messages,..] \defun{zeroOneTran}{zeroOneTran} \calls{zeroOneTran}{nsubst} -<>= +<>= (defun |zeroOneTran| (sex) (nsubst '|$EmptyMode| '? sex)) @@ -2539,7 +2539,7 @@ carrier[lines,messages,..]-> carrier[lines,messages,..] \defun{ncError}{ncError} \throws{ncError}{SpadCompileItem} -<>= +<>= (defun |ncError| () (throw '|SpadCompileItem| '|ncError|)) @@ -2577,7 +2577,7 @@ carrier[lines,messages,..]-> carrier[lines,messages,..] ; for line in lines repeat WRITE_-LINE CDR line ; WRITE_-LINE '" " \end{verbatim} -<>= +<>= (defun |ncloopPrintLines| (lines) ((lambda (Var4 line) (loop @@ -2628,7 +2628,7 @@ carrier[lines,messages,..]-> carrier[lines,messages,..] ; return value ; value \end{verbatim} -<>= +<>= (defun |nonBlank| (str) (let (value) ((lambda (Var3 i) @@ -2810,7 +2810,7 @@ contiguous comment spanning enough lines to overflow the stack. \defun{incHandleMessage}{incHandleMessage} \calls{incHandleMessage}{ncSoftError} \calls{incHandleMessage}{ncBug} -<>= +<>= (defun |incHandleMessage| (x) "Message handling for the source includer" (let ((msgtype (elt (elt x 1) 1)) @@ -2892,7 +2892,7 @@ contiguous comment spanning enough lines to overflow the stack. \defvar{Top?} \calls{Top?}{quotient} -<>= +<>= (defun |Top?| (|st|) "used in incLude1 for parsing" (eql (quotient |st| 10) 0)) @@ -3246,14 +3246,14 @@ contiguous comment spanning enough lines to overflow the stack. \defun{inclmsgPrematureEOF}{inclmsgPrematureEOF} \calls{inclmsgPrematureEOF}{origin} -<>= +<>= (defun |inclmsgPrematureEOF| (ufo) (list 'S2CI0002 (list (|theorigin| ufo)))) @ \defun{theorigin}{theorigin} -<>= +<>= (defun |theorigin| (x) (list #'|porigin| x)) @ @@ -3313,7 +3313,7 @@ contiguous comment spanning enough lines to overflow the stack. @ \defun{theid}{theid} -<>= +<>= (defun |theid| (a) (list identity a)) @ @@ -3337,7 +3337,7 @@ contiguous comment spanning enough lines to overflow the stack. \defun{thefname}{thefname} \calls{thefname}{pfname} -<>= +<>= (defun |thefname| (x) (list #'|pfname| x)) @ @@ -3461,7 +3461,7 @@ contiguous comment spanning enough lines to overflow the stack. @ \defun{inclmsgConsole}{inclmsgConsole} -<>= +<>= (defun |inclmsgConsole| () (list 'S2CI0005 nil)) @@ -3478,7 +3478,7 @@ contiguous comment spanning enough lines to overflow the stack. @ \defun{inclmsgFinSkipped}{inclmsgFinSkipped} -<>= +<>= (defun |inclmsgFinSkipped| () (list 'S2CI0008 nil)) @@ -3562,7 +3562,7 @@ contiguous comment spanning enough lines to overflow the stack. @ \defun{inclmsgIfBug}{inclmsgIfBug} -<>= +<>= (defun |inclmsgIfBug| () (list 'S2CB0002 nil)) @@ -3578,7 +3578,7 @@ contiguous comment spanning enough lines to overflow the stack. @ \defun{inclmsgCmdBug}{inclmsgCmdBug} -<>= +<>= (defun |inclmsgCmdBug| () (list 'S2CB0003 nil)) @@ -3678,7 +3678,7 @@ b ==> 7 \defun{incCommand?}{incCommand?} \calls{incCommand?}{char} -<>= +<>= (defun |incCommand?| (s) "does this start with a close paren?" (and (< 0 (length s)) (equal (elt s 0) (|char| '|)|)))) @@ -3694,7 +3694,7 @@ b ==> 7 ; good:= prefix.i = whole.j ; good \end{verbatim} -<>= +<>= (defun |incPrefix?| (prefix start whole) (let (good) (cond @@ -3725,7 +3725,7 @@ b ==> 7 \defun{incDrop}{incDrop} \calls{incDrop}{substring} -<>= +<>= (defun |incDrop| (n b) (if (>= n (length b)) '|| @@ -3772,7 +3772,7 @@ b ==> 7 @ \defun{incActive?}{incActive?} -<>= +<>= (defun |incActive?| (fn ufos) (member fn ufos)) @@ -3789,7 +3789,7 @@ Note that incRgen1 recursively calls this function. @ \defun{Delay}{Delay} -<>= +<>= (defun |Delay| (f x) (cons '|nonnullstream| (cons f x))) @@ -4251,7 +4251,7 @@ returning the token-dq and the rest of the line-stream \defun{lfid}{lfid} To pair badge and badgee -<>= +<>= (defun |lfid| (x) (list '|id| (intern x "BOOT"))) @@ -4297,7 +4297,7 @@ To pair badge and badgee @ \defun{lfcomment}{lfcomment} -<>= +<>= (defun |lfcomment| (x) (list '|comment| x)) @@ -4342,7 +4342,7 @@ To pair badge and badgee @ \defun{lfnegcomment}{lfnegcomment} -<>= +<>= (defun |lfnegcomment| (x) (list '|negcomment| x)) @@ -4460,7 +4460,7 @@ To pair badge and badgee \defun{keyword}{keyword} \calls{keyword}{hget} -<>= +<>= (defun |keyword| (st) (hget |scanKeyTable| st)) @@ -4468,7 +4468,7 @@ To pair badge and badgee \defun{keyword?}{keyword?} \calls{keyword?}{hget} -<>= +<>= (defun |keyword?| (st) (null (null (hget |scanKeyTable| st)))) @@ -4654,7 +4654,7 @@ To pair badge and badgee \defun{scanCloser?}{scanCloser?} \calls{scanCloser?}{keyword} \uses{scanCloser?}{scanCloser} -<>= +<>= (defun |scanCloser?| (w) (declare (special |scanCloser|)) (member (|keyword| w) |scanCloser|)) @@ -4738,14 +4738,14 @@ To pair badge and badgee \defun{lffloat}{lffloat} \calls{lffloat}{concat} -<>= +<>= (defun |lffloat| (a w e) (list '|float| (concat a "." w "e" e))) @ \defmacro{idChar?} -<>= +<>= (defmacro |idChar?| (x) `(or (alphanumericp ,x) (member ,x '(#\? #\% #\' #\!) :test #'char=))) @@ -4826,7 +4826,7 @@ NOTE: do not replace ``lyne'' with ``line'' @ \defun{lfspaces}{lfspaces} -<>= +<>= (defun |lfspaces| (x) (list '|spaces| x)) @@ -4847,7 +4847,7 @@ NOTE: do not replace ``lyne'' with ``line'' @ \defun{lfstring}{lfstring} -<>= +<>= (defun |lfstring| (x) (if (eql (length x) 1) (list '|char| x) @@ -4968,14 +4968,14 @@ NOTE: do not replace ``lyne'' with ``line'' \defun{rdigit?}{rdigit?} \calls{rdigit?}{strpos} -<>= +<>= (defun |rdigit?| (x) (strpos x "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 0 nil)) @ \defun{lfinteger}{lfinteger} -<>= +<>= (defun |lfinteger| (x) (list '|integer| x)) @@ -4983,7 +4983,7 @@ NOTE: do not replace ``lyne'' with ``line'' \defun{lfrinteger}{lfrinteger} \calls{lfrinteger}{concat} -<>= +<>= (defun |lfrinteger| (r x) (list '|integer| (concat r (concat "r" x)))) @@ -5056,7 +5056,7 @@ NOTE: do not replace ``lyne'' with ``line'' @ \defun{lferror}{lferror} -<>= +<>= (defun |lferror| (x) (list '|error| x)) @@ -5351,7 +5351,7 @@ where head is either an id or (id . alist) \defun{npPush}{Push one item onto \$stack} \usesdollar{npPush}{stack} -<>= +<>= (defun |npPush| (x) (declare (special |$stack|)) (push x |$stack|)) @@ -5360,7 +5360,7 @@ where head is either an id or (id . alist) \defun{npPop1}{Pop one item off \$stack} \usesdollar{npPop1}{stack} -<>= +<>= (defun |npPop1| () (declare (special |$stack|)) (pop |$stack|)) @@ -5369,7 +5369,7 @@ where head is either an id or (id . alist) \defun{npPop2}{Pop the second item off \$stack} \usesdollar{npPop2}{stack} -<>= +<>= (defun |npPop2| () (let (a) (declare (special |$stack|)) @@ -5380,7 +5380,7 @@ where head is either an id or (id . alist) \defun{npPop3}{Pop the third item off \$stack} \usesdollar{npPop3}{stack} -<>= +<>= (defun |npPop3| () (let (a) (declare (special |$stack|)) @@ -5663,7 +5663,7 @@ and the current token (\$ttok) \defun{npEqPeek}{Peek for keyword s, no advance of token stream} \usesdollar{npEqPeek}{ttok} \usesdollar{npEqPeek}{stok} -<>= +<>= (defun |npEqPeek| (s) (declare (special |$ttok| |$stok|)) (and (eq (caar |$stok|) '|key|) (eq s |$ttok|))) @@ -6051,7 +6051,7 @@ and the current token (\$ttok) \defun{npAnyNo}{npAnyNo} fn must transform the head of the stack -<>= +<>= (defun |npAnyNo| (fn) (do () ((not (apply fn nil)))) ; while apply do... t) @@ -8401,7 +8401,7 @@ carrier[ptree,...] -> carrier[ptree, ptreePremacro,...] \defun{mac0InfiniteExpansion,name}{mac0InfiniteExpansion,name} \calls{mac0InfiniteExpansion,name}{mac0GetName} \calls{mac0InfiniteExpansion,name}{pname} -<>= +<>= (defun |mac0InfiniteExpansion,name| (b) (let (st sy got) (setq got (|mac0GetName| b)) @@ -8577,7 +8577,7 @@ the original Macro pform. \defun{mac0Define}{Add a macro to the global pfMacros list} \usesdollar{mac0Define}{pfMacros} -<>= +<>= (defun |mac0Define| (sy state body) (declare (special |$pfMacros|)) (setq |$pfMacros| (cons (list sy state body) |$pfMacros|))) @@ -9256,7 +9256,7 @@ of the form ('expression expr position) \defun{pfLiteral?}{Is this a Literal node?} \calls{pfLiteral?}{pfAbSynOp} -<>= +<>= (defun |pfLiteral?| (form) (member (|pfAbSynOp| form) '(|integer| |symbol| |expression| |one| |zero| |char| |string| |float|))) @@ -9280,14 +9280,14 @@ of the form ('expression expr position) @ \defun{pfParts}{Return the parts of a tree node} -<>= +<>= (defun |pfParts| (form) (cdr form)) @ \defun{pfPile}{Return the argument unchanged} -<>= +<>= (defun |pfPile| (part) part) @@ -9395,7 +9395,7 @@ of the form ('expression expr position) \section{Trees} \defun{pfTree}{Construct a tree node} -<>= +<>= (defun |pfTree| (x y) (cons x y)))) @@ -9439,14 +9439,14 @@ of the form ('expression expr position) @ \defun{pfApplicationArg}{Return the Arg part of an Application node} -<>= +<>= (defun |pfApplicationArg| (pf) (caddr pf)) @ \defun{pfApplicationOp}{Return the Op part of an Application node} -<>= +<>= (defun |pfApplicationOp| (pf) (cadr pf)) @@ -9461,21 +9461,21 @@ of the form ('expression expr position) @ \defun{pfAndLeft}{Return the Left part of an And node} -<>= +<>= (defun |pfAndLeft| (pf) (cadr pf)) @ \defun{pfAndRight}{Return the Right part of an And node} -<>= +<>= (defun |pfAndRight| (pf) (caddr pf)) @ \defun{pfAppend}{Flatten a list of lists} -<>= +<>= (defun |pfAppend| (list) (apply #'append list)) @@ -9508,21 +9508,21 @@ of the form ('expression expr position) \defun{pf0AssignLhsItems}{Return the parts of an LhsItem of an Assign node} \calls{pf0AssignLhsItems}{pfParts} \calls{pf0AssignLhsItems}{pfAssignLhsItems} -<>= +<>= (defun |pf0AssignLhsItems| (pf) (|pfParts| (|pfAssignLhsItems| pf))) @ \defun{pfAssignLhsItems}{Return the LhsItem of an Assign node} -<>= +<>= (defun |pfAssignLhsItems| (pf) (cadr pf)) @ \defun{pfAssignRhs}{Return the RHS of an Assign node} -<>= +<>= (defun |pfAssignRhs| (pf) (caddr pf)) @@ -9585,7 +9585,7 @@ of the form ('expression expr position) @ \defun{pfBreakFrom}{Return the From part of a Break node} -<>= +<>= (defun |pfBreakFrom| (pf) (cadr pf)) @@ -9608,28 +9608,28 @@ of the form ('expression expr position) @ \defun{pfCoercetoExpr}{Return the Expression part of a CoerceTo node} -<>= +<>= (defun |pfCoercetoExpr| (pf) (cadr pf)) @ \defun{pfCoercetoType}{Return the Type part of a CoerceTo node} -<>= +<>= (defun |pfCoercetoType| (pf) (caddr pf)) @ \defun{pfCollectBody}{Return the Body of a Collect node} -<>= +<>= (defun |pfCollectBody| (pf) (cadr pf)) @ \defun{pfCollectIterators}{Return the Iterators of a Collect node} -<>= +<>= (defun |pfCollectIterators| (pf) (caddr pf)) @@ -9660,14 +9660,14 @@ of the form ('expression expr position) @ \defun{pfDefinitionLhsItems}{Return the Lhs of a Definition node} -<>= +<>= (defun |pfDefinitionLhsItems| (pf) (cadr pf)) @ \defun{pfDefinitionRhs}{Return the Rhs of a Definition node} -<>= +<>= (defun |pfDefinitionRhs| (pf) (caddr pf)) @@ -9707,7 +9707,7 @@ of the form ('expression expr position) @ \defun{pfDoBody}{Return the Body of a Do node} -<>= +<>= (defun |pfDoBody| (pf) (cadr pf)) @@ -9743,14 +9743,14 @@ of the form ('expression expr position) @ \defun{pfExitCond}{Return the Cond part of an Exit} -<>= +<>= (defun |pfExitCond| (pf) (cadr pf)) @ \defun{pfExitExpr}{Return the Expression part of an Exit} -<>= +<>= (defun |pfExitExpr| (pf) (caddr pf)) @@ -9774,7 +9774,7 @@ of the form ('expression expr position) @ \defun{pfFirst}{pfFirst} -<>= +<>= (defun |pfFirst| (form) (cadr form)) @@ -9815,7 +9815,7 @@ of the form ('expression expr position) @ \defun{pfFreeItems}{Return the Items of a Free node} -<>= +<>= (defun |pfFreeItems| (pf) (cadr pf)) @@ -9847,14 +9847,14 @@ of the form ('expression expr position) @ \defun{pfForinLhs}{Return the LHS part of a ForIn node} -<>= +<>= (defun |pfForinLhs| (pf) (cadr pf)) @ \defun{pfForinWhole}{Return the Whole part of a ForIn node} -<>= +<>= (defun |pfForinWhole| (pf) (caddr pf)) @@ -9894,14 +9894,14 @@ of the form ('expression expr position) @ \defun{pfFromdomWhat}{Return the What part of a Fromdom node} -<>= +<>= (defun |pfFromdomWhat| (pf) (cadr pf)) @ \defun{pfFromdomDomain}{Return the Domain part of a Fromdom node} -<>= +<>= (defun |pfFromdomDomain| (pf) (caddr pf)) @@ -9933,14 +9933,14 @@ of the form ('expression expr position) @ \defun{pfIfCond}{Return the Cond part of an If} -<>= +<>= (defun |pfIfCond| (pf) (cadr pf)) @ \defun{pfIfThen}{Return the Then part of an If} -<>= +<>= (defun |pfIfThen| (pf) (caddr pf)) @@ -9956,7 +9956,7 @@ of the form ('expression expr position) @ \defun{pfIfElse}{Return the Else part of an If} -<>= +<>= (defun |pfIfElse| (pf) (cadddr pf)) @@ -10038,14 +10038,14 @@ of the form ('expression expr position) @ \defun{pfLambdaBody}{Return the Body part of a Lambda node} -<>= +<>= (defun |pfLambdaBody| (pf) (cadddr pf)) @ \defun{pfLambdaRets}{Return the Rets part of a Lambda node} -<>= +<>= (defun |pfLambdaRets| (pf) (caddr pf)) @@ -10060,7 +10060,7 @@ of the form ('expression expr position) @ \defun{pfLambdaArgs}{Return the Args part of a Lambda node} -<>= +<>= (defun |pfLambdaArgs| (pf) (cadr pf)) @@ -10101,7 +10101,7 @@ of the form ('expression expr position) @ \defun{pfLocalItems}{Return the Items of a Local node} -<>= +<>= (defun |pfLocalItems| (pf) (cadr pf)) @@ -10134,7 +10134,7 @@ of the form ('expression expr position) @ \defun{pfLoopIterators}{Return the Iterators of a Loop node} -<>= +<>= (defun |pfLoopIterators| (pf) (cadr pf)) @@ -10176,14 +10176,14 @@ of the form ('expression expr position) @ \defun{pfMacroLhs}{Return the Lhs of a Macro node} -<>= +<>= (defun |pfMacroLhs| (pf) (cadr pf)) @ \defun{pfMacroRhs}{Return the Rhs of a Macro node} -<>= +<>= (defun |pfMacroRhs| (pf) (caddr pf)) @@ -10206,7 +10206,7 @@ of the form ('expression expr position) @ \defun{pfMLambdaArgs}{Return the Args of an MLambda} -<>= +<>= (defun |pfMLambdaArgs| (pf) (cadr pf)) @@ -10221,7 +10221,7 @@ of the form ('expression expr position) @ \defun{pfMLambdaBody}{pfMLambdaBody} -<>= +<>= (defun |pfMLambdaBody| (pf) (caddr pf)) @@ -10236,7 +10236,7 @@ of the form ('expression expr position) @ \defun{pfNotArg}{Return the Arg part of a Not node} -<>= +<>= (defun |pfNotArg| (pf) (cadr pf)) @@ -10259,7 +10259,7 @@ of the form ('expression expr position) @ \defun{pfNovalueExpr}{Return the Expr part of a Novalue node} -<>= +<>= (defun |pfNovalueExpr| (pf) (cadr pf)) @@ -10282,14 +10282,14 @@ of the form ('expression expr position) @ \defun{pfOrLeft}{Return the Left part of an Or node} -<>= +<>= (defun |pfOrLeft| (pf) (cadr pf)) @ \defun{pfOrRight}{Return the Right part of an Or node} -<>= +<>= (defun |pfOrRight| (pf) (caddr pf)) @@ -10319,14 +10319,14 @@ of the form ('expression expr position) @ \defun{pfPretendExpr}{Return the Expression part of a Pretend node} -<>= +<>= (defun |pfPretendExpr| (pf) (cadr pf)) @ \defun{pfPretendType}{Return the Type part of a Pretend node} -<>= +<>= (defun |pfPretendType| (pf) (caddr pf)) @@ -10357,14 +10357,14 @@ of the form ('expression expr position) @ \defun{pfRestrictExpr}{Return the Expr part of a Restrict node} -<>= +<>= (defun |pfRestrictExpr| (pf) (cadr pf)) @ \defun{pfRestrictType}{Return the Type part of a Restrict node} -<>= +<>= (defun |pfRestrictType| (pf) (caddr pf)) @@ -10395,7 +10395,7 @@ of the form ('expression expr position) @ \defun{pfReturnExpr}{Return the Expr part of a Return node} -<>= +<>= (defun |pfReturnExpr| (pf) (cadr pf)) @@ -10427,14 +10427,14 @@ of the form ('expression expr position) @ \defun{pfRuleLhsItems}{Return the Lhs of a Rule node} -<>= +<>= (defun |pfRuleLhsItems| (pf) (cadr pf)) @ \defun{pfRuleRhs}{Return the Rhs of a Rule node} -<>= +<>= (defun |pfRuleRhs| (pf) (caddr pf)) @@ -10449,7 +10449,7 @@ of the form ('expression expr position) @ \defun{pfSecond}{pfSecond} -<>= +<>= (defun |pfSecond| (form) (caddr form)) @@ -10464,7 +10464,7 @@ of the form ('expression expr position) @ \defun{pfSequenceArgs}{Return the Args of a Sequence node} -<>= +<>= (defun |pfSequenceArgs| (pf) (cadr pf)) @@ -10504,7 +10504,7 @@ of the form ('expression expr position) @ \defun{pfSuchthatCond}{Return the Cond part of a SuchThat node} -<>= +<>= (defun |pfSuchthatCond| (pf) (cadr pf)) @@ -10527,14 +10527,14 @@ of the form ('expression expr position) @ \defun{pfTaggedExpr}{Return the Expression portion of a Tagged node} -<>= +<>= (defun |pfTaggedExpr| (pf) (caddr pf)) @ \defun{pfTaggedTag}{Return the Tag of a Tagged node} -<>= +<>= (defun |pfTaggedTag| (pf) (cadr pf)) @@ -10600,14 +10600,14 @@ of the form ('expression expr position) @ \defun{pfTypedType}{Return the Type of a Typed node} -<>= +<>= (defun |pfTypedType| (pf) (caddr pf)) @ \defun{pfTypedId}{Return the Id of a Typed node} -<>= +<>= (defun |pfTypedId| (pf) (cadr pf)) @@ -10647,7 +10647,7 @@ of the form ('expression expr position) @ \defun{pfTupleParts}{Return the Parts of a Tuple node} -<>= +<>= (defun |pfTupleParts| (pf) (cadr pf)) @@ -10718,14 +10718,14 @@ of the form ('expression expr position) @ \defun{pfWhereContext}{Return the Context of a Where node} -<>= +<>= (defun |pfWhereContext| (pf) (cadr pf)) @ \defun{pfWhereExpr}{Return the Expr part of a Where node} -<>= +<>= (defun |pfWhereExpr| (pf) (caddr pf)) @@ -10748,7 +10748,7 @@ of the form ('expression expr position) @ \defun{pfWhileCond}{Return the Cond part of a While node} -<>= +<>= (defun |pfWhileCond| (pf) (cadr pf)) @@ -11213,7 +11213,7 @@ output is an old-parser-style s-expression. @ \defun{pmDontQuote?}{pmDontQuote?} -<>= +<>= (defun |pmDontQuote?| (sy) (member sy '(+ - * ** ^ / |log| |exp| |pi| |sqrt| |ei| |li| |erf| |ci| @@ -11225,7 +11225,7 @@ output is an old-parser-style s-expression. @ \defun{hasOptArgs?}{hasOptArgs?} -<>= +<>= (defun |hasOptArgs?| (argSex) (let (rhs lhs opt nonOpt tmp1 tmp2) (dolist (arg argSex) @@ -11835,7 +11835,7 @@ output is an old-parser-style s-expression. \defun{opTran}{Translate ops into internal symbols} \usesdollar{opTran}{dotdot} -<>= +<>= (defun |opTran| (op) (declare (special |$dotdot|)) (cond @@ -12109,7 +12109,7 @@ explains the strange parsing technique). \defun{StreamNull}{StreamNull} \calls{StreamNull}{eqcar} -<>= +<>= (defun |StreamNull| (x) (let (st) (cond @@ -12389,7 +12389,7 @@ Only enpiles forests with $>=2$ trees \chapter{Dequeue Functions} The dqUnit makes a unit dq i.e. a dq with one item, from the item \defun{dqUnit}{dqUnit} -<>= +<>= (defun |dqUnit| (s) (let (a) (setq a (list s)) @@ -12412,7 +12412,7 @@ The dqConcat function concatenates a list of dq's, destroying all but the last \defun{dqAppend}{dqAppend} The dqAppend function appends 2 dq's, destroying the first -<>= +<>= (defun |dqAppend| (x y) (cond ((null x) y) @@ -12424,7 +12424,7 @@ The dqAppend function appends 2 dq's, destroying the first @ \defun{dqToList}{dqToList} -<>= +<>= (defun |dqToList| (s) (when s (car s))) @@ -12436,7 +12436,7 @@ The dqAppend function appends 2 dq's, destroying the first \defun{lnCreate}{Line object creation} This is called in only one place, the incLine1 function. -<>= +<>= (defun |lnCreate| (extraBlanks string globalNum &rest optFileStuff) (let ((localNum (first optFileStuff)) (filename (second optFileStuff))) @@ -12446,51 +12446,51 @@ This is called in only one place, the incLine1 function. @ \defun{lnExtraBlanks}{Line element 0; Extra blanks} -<>= +<>= (defun |lnExtraBlanks| (lineObject) (elt lineObject 0)) @ \defun{lnString}{Line element 1; String} -<>= +<>= (defun |lnString| (lineObject) (elt lineObject 1)) @ \defun{lnGlobalNum}{Line element 2; Globlal number} -<>= +<>= (defun |lnGlobalNum| (lineObject) (elt lineObject 2)) @ \defun{lnSetGlobalNum}{Line element 2; Set Global number} -<>= +<>= (defun |lnSetGlobalNum| (lineObject num) (setf (elt lineObject 2) num)) @ \defun{lnLocalNum}{Line elemnt 3; Local number} -<>= +<>= (defun |lnLocalNum| (lineObject) (elt lineObject 3)) @ \defun{lnPlaceOfOrigin}{Line element 4; Place of origin} -<>= +<>= (defun |lnPlaceOfOrigin| (lineObject) (elt lineObject 4)) @ \defun{lnImmediate?}{Line element 4: Is it a filename?} \calls{lnImmediate?}{lnFileName?} -<>= +<>= (defun |lnImmediate?| (lineObject) (null (|lnFileName?| lineObject))) @ \defun{lnFileName?}{Line element 4: Is it a filename?} -<>= +<>= (defun |lnFileName?| (lineObject) (let (filename) (when (consp (setq filename (elt lineObject 4))) filename))) @@ -12542,50 +12542,50 @@ msgObject tag -- catagory of msg @ \defun{getMsgPosTagOb}{getMsgPosTagOb} -<>= +<>= (defun |getMsgPosTagOb| (msg) (elt msg 1)) @ \defun{getMsgKey}{getMsgKey} -<>= +<>= (defun |getMsgKey| (msg) (elt msg 2)) @ \defun{getMsgArgL}{getMsgArgL} -<>= +<>= (defun |getMsgArgL| (msg) (elt msg 3)) @ \defun{getMsgPrefix}{getMsgPrefix} -<>= +<>= (defun |getMsgPrefix| (msg) (elt msg 4)) @ \defun{setMsgPrefix}{setMsgPrefix} -<>= +<>= (defun |setMsgPrefix| (msg val) (setf (elt msg 4) val)) @ \defun{getMsgText}{getMsgText} -<>= +<>= (defun |getMsgText| (msg) (elt msg 5)) @ \defun{setMsgText}{setMsgText} -<>= +<>= (defun |setMsgText| (msg val) (setf (elt msg 5) val)) @ \defun{getMsgPrefix?}{getMsgPrefix?} -<>= +<>= (defun |getMsgPrefix?| (msg) (let ((pre (|getMsgPrefix| msg))) (unless (eq pre '|noPre|) pre))) @@ -12596,7 +12596,7 @@ msgObject tag -- catagory of msg The valid message tags are: line, old, error, warn, bug, unimple, remark, stat, say, debug \calls{getMsgTag}{ncTag} -<>= +<>= (defun |getMsgTag| (msg) (|ncTag| msg)) @ @@ -12604,7 +12604,7 @@ line, old, error, warn, bug, unimple, remark, stat, say, debug \defun{getMsgTag?}{getMsgTag?} \calls{getMsgTag?}{IFCAR} \calls{getMsgTag?}{getMsgTag} -<>= +<>= (defun |getMsgTag?| (|msg|) (ifcar (member (|getMsgTag| |msg|) (list '|line| '|old| '|error| '|warn| '|bug| @@ -12674,7 +12674,7 @@ Give message and throw to a recovery point. @ \defun{desiredMsg}{desiredMsg} -<>= +<>= (defun |desiredMsg| (erMsgKey &rest optCatFlag) (cond ((null (null optCatFlag)) (car optCatFlag)) @@ -12780,7 +12780,7 @@ Give message and throw to a recovery point. \defun{getPreStL}{getPreStL} \calls{getPreStL}{size} \usesdollar{getPreStL}{preLength} -<>= +<>= (defun |getPreStL| (optPre) (let (spses extraPlaces) (declare (special |$preLength|)) @@ -12878,7 +12878,7 @@ Give message and throw to a recovery point. \calls{showMsgPos?}{msgImPr?} \calls{showMsgPos?}{leader?} \usesdollar{showMsgPos?}{erMsgToss} -<>= +<>= (defun |showMsgPos?| (msg) (declare (special |$erMsgToss|)) (or |$erMsgToss| (and (null (|msgImPr?| msg)) (null (|leader?| msg))))) @@ -12951,7 +12951,7 @@ org prints out the word noposition or console @ \defun{poNopos?}{poNopos?} -<>= +<>= (defun |poNopos?| (posn) (equal posn (list '|noposition|))) @@ -12979,7 +12979,7 @@ org prints out the word noposition or console @ \defun{poGetLineObject}{poGetLineObject} -<>= +<>= (defun |poGetLineObject| (posn) (car posn)) @@ -13015,14 +13015,14 @@ org prints out the word noposition or console @ \defun{remLine}{remLine} -<>= +<>= (defun |remLine| (positionList) (list (ifcar positionList))) @ \defun{getMsgKey?}{getMsgKey?} \calls{getMsgKey?}{identp} -<>= +<>= (defun |getMsgKey?| (msg) (let ((val (|getMsgKey| msg))) (when (identp val) val))) @@ -13359,7 +13359,7 @@ Bug in the compiler: something which shouldn't have happened did. \defun{rep}{rep} \tpdhere{This function should be replaced by fillerspaces} -<>= +<>= (defun |rep| (c n) (if (< 0 n) (make-string n :initial-element (character c)) @@ -13368,13 +13368,13 @@ Bug in the compiler: something which shouldn't have happened did. @ \defun{getLinePos}{getLinePos} -<>= +<>= (defun |getLinePos| (line) (car line)) @ \defun{getLineText}{getLineText} -<>= +<>= (defun |getLineText| (line) (cdr line)) @ @@ -13565,7 +13565,7 @@ redundant(msg,thisPosMsgs) == @ \defun{poCharPosn}{poCharPosn} -<>= +<>= (defun |poCharPosn| (posn) (cdr posn)) @ @@ -13656,7 +13656,7 @@ makeLeaderMsg chPosList == This function inserts a position in the proper place of a position list. This is used for the 2nd pos of a fromto \calls{insertPos}{done} -<>= +<>= (defun |insertPos| (newPos posList) (let (pos top bot done) (setq bot (cons 0 posList)) @@ -13705,21 +13705,21 @@ This is used for the 2nd pos of a fromto \defun{From}{From} This is called from parameter list of nc message functions -<>= +<>= (defun |From| (pos) (list 'from pos)) @ \defun{To}{To} This is called from parameter list of nc message functions -<>= +<>= (defun |To| (pos) (list 'to pos)) @ \defun{FromTo}{FromTo} This is called from parameter list of nc message functions -<>= +<>= (defun |FromTo| (pos1 pos2) (list 'fromto pos1 pos2)) @ @@ -15063,7 +15063,7 @@ where head is either an id or (id . alist) \defun{poNoPosition?}{poNoPosition?} \calls{poNoPosition?}{eqcar} -<>= +<>= (defun |poNoPosition?| (pos) (eqcar pos '|noposition|)) @@ -15077,7 +15077,7 @@ where head is either an id or (id . alist) @ \defun{tokPart}{tokPart} -<>= +<>= (defun |tokPart| (x) (cdr x)) @ @@ -15105,7 +15105,7 @@ where head is either an id or (id . alist) \defun{poNoPosition}{poNoPosition} \usesdollar{poNoPosition}{nopos} -<>= +<>= (defun |poNoPosition| () (declare (special |$nopos|)) |$nopos|) @@ -15597,7 +15597,7 @@ valid for this level. \defun{satisfiesUserLevel}{satisfiesUserLevel} \usesdollar{satisfiesUserLevel}{UserLevel} -<>= +<>= (defun |satisfiesUserLevel| (x) (declare (special |$UserLevel|)) (cond @@ -15656,7 +15656,7 @@ valid for this level. \defun{getParserMacroNames}{getParserMacroNames} The \verb|$pfMacros| is a list of all of the user-defined macros. \usesdollar{getParserMacroNames}{pfMacros} -<>= +<>= (defun |getParserMacroNames| () (declare (special |$pfMacros|)) (remove-duplicates (mapcar #'car |$pfMacros|))) @@ -16316,7 +16316,7 @@ The \verb|$msgdbPrims| variable is set to: @ \defun{isIntegerString}{Is the argument string an integer?} -<>= +<>= (defun |isIntegerString| (tok) (multiple-value-bind (int len) (parse-integer tok :junk-allowed t) (when (and int (= len (length tok))) int))) @@ -16449,14 +16449,14 @@ The \verb|$msgdbPrims| variable is set to: \defun{stripSpaces}{Remove the spaces surrounding a string} \tpdhere{This should probably be a macro or eliminated} -<>= +<>= (defun |stripSpaces| (str) (string-trim '(#\space) str)) @ \defun{stripLisp}{Remove the lisp command prefix} -<>= +<>= (defun |stripLisp| (str) (if (string= (subseq str 0 4) "lisp") (subseq str 4) @@ -16466,7 +16466,7 @@ The \verb|$msgdbPrims| variable is set to: \defun{nplisp}{Handle the )lisp command} \usesdollar{nplisp}{ans} -<>= +<>= (defun |nplisp| (str) (declare (special |$ans|)) (setq |$ans| (eval (read-from-string str))) @@ -16476,7 +16476,7 @@ The \verb|$msgdbPrims| variable is set to: \defun{npboot}{The )boot command is no longer supported} \tpdhere{Remove all boot references from top level} -<>= +<>= (defun |npboot| (str) (declare (ignore str)) (format t "The )boot command is no longer supported~%")) @@ -16647,7 +16647,7 @@ of synonyms which are in common use. \defun{axiomVersion}{Print the current version information} \uses{axiomVersion}{*yearweek*} \uses{axiomVersion}{*build-version*} -<>= +<>= (defun axiomVersion () (declare (special *build-version* *yearweek*)) (concatenate 'string "Axiom " *build-version* " built on " *yearweek*)) @@ -16755,7 +16755,7 @@ for processing \verb|)read| of input files. \defun{ncloopPrefix?}{ncloopPrefix?} If we find the prefix string in the whole string starting at position zero we return the remainder of the string without the leading prefix. -<>= +<>= (defun |ncloopPrefix?| (prefix whole) (when (eql (search prefix whole) 0) (subseq whole (length prefix)))) @@ -17578,7 +17578,7 @@ TPDHERE: Note that this function also seems to parse out )except \defun{clearMacroTable}{clearMacroTable} \usesdollar{clearMacroTable}{pfMacros} -<>= +<>= (defun |clearMacroTable| () (declare (special |$pfMacros|)) (setq |$pfMacros| nil)) @@ -18344,7 +18344,7 @@ Portions Copyright (c) 2001-2010 Timothy Daly @ \defun{trademark}{trademark} -<>= +<>= (defun |trademark| () (format t "The term Axiom, in the field of computer algebra software, ~%") (format t "along with AXIOM and associated images are common-law ~%") @@ -18366,7 +18366,7 @@ verbatim. This will eventually result in a call to the function \section{Functions} \defun{credits}{credits} \uses{credits}{credits} -<>= +<>= (defun |credits| () (declare (special credits)) (mapcar #'(lambda (x) (princ x) (terpri)) credits)) @@ -18561,7 +18561,7 @@ in the Category, Domain, or Package source code. @ \defun{flatten}{flatten} -<>= +<>= (defun flatten (x) (labels ( (rec (x acc) @@ -18929,7 +18929,7 @@ We remove all of the \verb|spad{...}| delimiters which will occur around other spad variables. Technically we should search recursively for the matching delimiter rather than the next brace but the problem does not arise in practice. -<>= +<>= (defun cleanupLine (line) (do ((mark (search "{}" line) (search "{}" line))) ((null mark)) @@ -19117,7 +19117,7 @@ o )quit \defun{fin}{Exit from the interpreter to lisp} \throws{fin}{spad-reader} \uses{fin}{eof} -<>= +<>= (defun |fin| () (setq *eof* t) (throw 'spad_reader nil)) @@ -19300,61 +19300,61 @@ These could be macros but we wish to export them to the API code in the algebra so we keep them as functions. \subsection{0th Frame Component -- frameName} \defun{frameName}{frameName} -<>= +<>= (defun frameName (frame) (car frame)) @ \subsection{1st Frame Component -- frameInteractive} -<>= +<>= (defun frameInteractive (frame) (nth 1 frame)) @ \subsection{2nd Frame Component -- frameIOIndex} -<>= +<>= (defun frameIOIndex (frame) (nth 2 frame)) @ \subsection{3rd Frame Component -- frameHiFiAccess} -<>= +<>= (defun frameHiFiAccess (frame) (nth 3 frame)) @ \subsection{4th Frame Component -- frameHistList} -<>= +<>= (defun frameHistList (frame) (nth 4 frame)) @ \subsection{5th Frame Component -- frameHistListLen} -<>= +<>= (defun frameHistListLen (frame) (nth 5 frame)) @ \subsection{6th Frame Component -- frameHistListAct} -<>= +<>= (defun frameHistListAct (frame) (nth 6 frame)) @ \subsection{7th Frame Component -- frameHistRecord} -<>= +<>= (defun frameHistRecord (frame) (nth 7 frame)) @ \subsection{8th Frame Component -- frameHistoryTable} -<>= +<>= (defun frameHistoryTable (frame) (nth 8 frame)) @ \subsection{9th Frame Component -- frameExposureData} -<>= +<>= (defun frameExposureData (frame) (nth 9 frame)) @@ -19393,7 +19393,7 @@ initial values. This function simply walks across the frame in the frame ring and returns a list of the name of each frame. \usesdollar{frameNames}{interpreterFrameRing} -<>= +<>= (defun |frameNames| () "Creating a List of all of the Frame Names" (declare (special |$interpreterFrameRing|)) @@ -19423,7 +19423,7 @@ returns a single frame that will be placed in the frame ring. \usesdollar{emptyInterpreterFrame}{HistListAct} \usesdollar{emptyInterpreterFrame}{HistRecord} \usesdollar{emptyInterpreterFrame}{localExposureDataDefault} -<>= +<>= (defun |emptyInterpreterFrame| (name) "Create a new, empty Interpreter Frame" (declare (special |$HiFiAccess| |$HistList| |$HistListLen| |$HistListAct| @@ -19457,7 +19457,7 @@ values of the global variables and returns this as a frame element. \usesdollar{createCurrentInterpreterFrame}{HistRecord} \usesdollar{createCurrentInterpreterFrame}{internalHistoryTable} \usesdollar{createCurrentInterpreterFrame}{localExposureData} -<>= +<>= (defun |createCurrentInterpreterFrame| () "Collecting up the Environment into a Frame" (declare (special |$interpreterFrameName| |$InteractiveFrame| |$IOindex| @@ -19525,7 +19525,7 @@ the frames and if we find one we return it. \calls{findFrameInRing}{boot-equal} \calls{findFrameInRing}{frameName} \usesdollar{findFrameInRing}{interpreterFrameRing} -<>= +<>= (defun |findFrameInRing| (name) "Find a Frame in the Frame Ring by Name" (let (result) @@ -37600,14 +37600,14 @@ Note that this assumes ``table'' is a string. @ \defun{qenum}{qenum} -<>= +<>= (defun qenum (cvec ind) (char-code (char cvec ind))) @ \defmacro{identp} -<>= +<>= (defmacro identp (x) (if (atom x) `(and ,x (symbolp ,x)) @@ -37619,7 +37619,7 @@ Note that this assumes ``table'' is a string. \defun{concat}{concat} \calls{concat}{string-concatenate} -<>= +<>= (defun concat (a b &rest l) (if (bit-vector-p a) (if l @@ -37660,7 +37660,7 @@ Note that this assumes ``table'' is a string. @ \defun{member}{member} -<>= +<>= (defun |member| (item sequence) (cond ((symbolp item) (member item sequence :test #'eq)) @@ -37753,20 +37753,20 @@ semantics survive. @ \defun{bvec-make-full}{IndexedBits new function support} -<>= +<>= (defun bvec-make-full (n x) (make-array (list n) :element-type 'bit :initial-element x)) @ \defmacro{bit-to-truth}{IndexedBits elt function support} -<>= +<>= (defmacro bit-to-truth (b) `(eq ,b 1)) @ \defmacro{bvec-elt}{IndexedBits elt function support} -<>= +<>= (defmacro bvec-elt (bv i) `(sbit ,bv ,i)) @ @@ -37784,25 +37784,25 @@ semantics survive. @ \defun{bvec-concat}{IndexedBits concat function support} -<>= +<>= (defun bvec-concat (bv1 bv2) (concatenate '(vector bit) bv1 bv2)) @ \defun{bvec-copy}{IndexedBits copy function support} -<>= +<>= (defun bvec-copy (bv) (copy-seq bv)) @ \defun{bvec-equal}{IndexedBits = function support} -<>= +<>= (defun bvec-equal (bv1 bv2) (equal bv1 bv2)) @ \defun{bvec-greater}{IndexedBits $<$ function support} -<>= +<>= (defun bvec-greater (bv1 bv2) (let ((pos (mismatch bv1 bv2))) (cond ((or (null pos) (>= pos (length bv1))) nil) @@ -37813,37 +37813,37 @@ semantics survive. @ \defun{bvec-and}{IndexedBits And function support} -<>= +<>= (defun bvec-and (bv1 bv2) (bit-and bv1 bv2)) @ \defun{bvec-or}{IndexedBits Or function support} -<>= +<>= (defun bvec-or (bv1 bv2) (bit-ior bv1 bv2)) @ \defun{bvec-xor}{IndexedBits xor function support} -<>= +<>= (defun bvec-xor (bv1 bv2) (bit-xor bv1 bv2)) @ \defun{bvec-nand}{IndexedBits nand function support} -<>= +<>= (defun bvec-nand (bv1 bv2) (bit-nand bv1 bv2)) @ \defun{bvec-nor}{IndexedBits nor function support} -<>= +<>= (defun bvec-nor (bv1 bv2) (bit-nor bv1 bv2)) @ \defun{bvec-not}{IndexedBits not function support} -<>= +<>= (defun bvec-not (bv) (bit-not bv)) @ @@ -38098,7 +38098,7 @@ a call to this code. The Integer domain contains the line: \begin{verbatim} (PUT (QUOTE |INT;divide;2$R;44|) (QUOTE |SPADreplace|) (QUOTE DIVIDE2)) \end{verbatim} -<>= +<>= (defun divide2 (x y) (multiple-value-call #'cons (truncate x y))) @@ -38113,7 +38113,7 @@ a call to this code. The Integer domain contains the line: \end{verbatim} Because these are identical except for name we make the symbol-functions equivalent. This was done in the original code for efficiency. -<>= +<>= (setf (symbol-function 'remainder2) #'rem) @ @@ -38125,7 +38125,7 @@ a call to this code. The Integer domain contains the line: \begin{verbatim} (PUT (QUOTE |INT;quo;3$;45|) (QUOTE |SPADreplace|) (QUOTE QUOTIENT2)) \end{verbatim} -<>= +<>= (defun quotient2 (x y) (values (truncate x y))) @@ -38237,7 +38237,7 @@ appropriate entries in the browser database. The legal values for arg are \defun{DirToString}{FileName directory function support} For example, ``/'' ``/u/smwatt'' ``../src'' -<>= +<>= (defun |DirToString| (d) (cond ((equal d '(:root)) "/") @@ -38247,7 +38247,7 @@ For example, ``/'' ``/u/smwatt'' ``../src'' @ \defun{fnameName}{FileName name function implementation} -<>= +<>= (defun |fnameName| (f) (let ((s (pathname-name f))) (if s s "") )) @@ -38255,7 +38255,7 @@ For example, ``/'' ``/u/smwatt'' ``../src'' @ \defun{fnameType}{FileName extension function implementation} -<>= +<>= (defun |fnameType| (f) (let ((s (pathname-type f))) (if s s "") )) @@ -38263,14 +38263,14 @@ For example, ``/'' ``/u/smwatt'' ``../src'' @ \defun{fnameExists?}{FileName exists? function implementation} -<>= +<>= (defun |fnameExists?| (f) (if (probe-file (namestring f)) 't nil)) @ \defun{fnameReadable?}{FileName readable? function implementation} -<>= +<>= (defun |fnameReadable?| (f) (let ((s (open f :direction :input :if-does-not-exist nil))) (cond (s (close s) t) (t nil)) )) @@ -38638,7 +38638,7 @@ See Steele Common Lisp 1990 p308 \defun{integer-decode-float-numerator}{Machine specific float numerator} This is used in the DoubleFloat integerDecode function -<>= +<>= (defun integer-decode-float-numerator (x) (integer-decode-float x)) @@ -38646,7 +38646,7 @@ This is used in the DoubleFloat integerDecode function \defun{integer-decode-float-denominator}{Machine specific float denominator} This is used in the DoubleFloat integerDecode function -<>= +<>= (defun integer-decode-float-denominator (x) (multiple-value-bind (mantissa exponent sign) (integer-decode-float x) (declare (ignore mantissa sign)) (expt 2 (abs exponent)))) @@ -38655,7 +38655,7 @@ This is used in the DoubleFloat integerDecode function \defun{integer-decode-float-sign}{Machine specific float sign} This is used in the DoubleFloat integerDecode function -<>= +<>= (defun integer-decode-float-sign (x) (multiple-value-bind (mantissa exponent sign) (integer-decode-float x) (declare (ignore mantissa exponent)) sign)) @@ -38664,7 +38664,7 @@ This is used in the DoubleFloat integerDecode function \defun{integer-decode-float-exponent}{Machine specific float bit length} This is used in the DoubleFloat integerDecode function -<>= +<>= (defun integer-decode-float-exponent (x) (multiple-value-bind (mantissa exponent sign) (integer-decode-float x) (declare (ignore mantissa sign)) exponent)) @@ -38674,7 +38674,7 @@ This is used in the DoubleFloat integerDecode function \defun{manexp}{Decode floating-point values} This function is used by DoubleFloat to implement the ``mantissa'' and ``exponent'' functions. -<>= +<>= (defun manexp (u) (multiple-value-bind (f e s) (decode-float u) @@ -38685,7 +38685,7 @@ This function is used by DoubleFloat to implement the ``mantissa'' and \defun{cot}{The cotangent routine} The cotangent function is defined as \[cot(z) = \frac{1}{tan(z)}\] -<>= +<>= (defun cot (a) (if (or (> a 1000.0) (< a -1000.0)) (/ (cos a) (sin a)) @@ -38697,7 +38697,7 @@ The cotangent function is defined as The inverse cotangent (arc-cotangent) function is defined as \[acot(z) = cot^{-1}(z) = tan^{-1}(\frac{1}{z})\] See Steele Common Lisp 1990 pp305-307 -<>= +<>= (defun acot (a) (if (> a 0.0) (if (> a 1.0) @@ -38711,70 +38711,70 @@ See Steele Common Lisp 1990 pp305-307 \defun{sec}{The secant function} \[sec(x) = \frac{1}{cos(x)}\] -<>= +<>= (defun sec (x) (/ 1 (cos x))) @ \defun{asec}{The inverse secant function} \[asec(x) = acos\left(\frac{1}{x}\right)\] -<>= +<>= (defun asec (x) (acos (/ 1 x))) @ \defun{csc}{The cosecant function} \[csc(x) = \frac{1}{sin(x)}\] -<>= +<>= (defun csc (x) (/ 1 (sin x))) @ \defun{acsc}{The inverse cosecant function} \[acsc(x) = \frac{1}{asin(x)}\] -<>= +<>= (defun acsc (x) (asin (/ 1 x))) @ \defun{csch}{The hyperbolic cosecant function} \[csch(x) = \frac{1}{sinh(x)} \] -<>= +<>= (defun csch (x) (/ 1 (sinh x))) @ \defun{coth}{The hyperbolic cotangent function} \[coth(x) = cosh(x) csch(x)\] -<>= +<>= (defun coth (x) (* (cosh x) (csch x))) @ \defun{sech}{The hyperbolic secant function} \[sech(x) = \frac{1}{cosh(x)}\] -<>= +<>= (defun sech (x) (/ 1 (cosh x))) @ \defun{acsch}{The inverse hyperbolic cosecant function} \[acsch(x) = asinh\left(\frac{1}{x}\right)\] -<>= +<>= (defun acsch (x) (asinh (/ 1 x))) @ \defun{acoth}{The inverse hyperbolic cotangent function} \[acoth(x) = atanh\left(\frac{1}{x}\right)\] -<>= +<>= (defun acoth (x) (atanh (/ 1 x))) @ \defun{asech}{The inverse hyperbolic secant function} \[asech(x) = acosh\left(\frac{1}{x}\right)\] -<>= +<>= (defun asech (x) (acosh (/ 1 x))) @ @@ -39131,7 +39131,7 @@ for example: \defun{monitor-inittable}{Initialize the monitor statistics hashtable} \uses{monitor-inittable}{*monitor-table*} -<>= +<>= (defun monitor-inittable () "initialize the monitor statistics hashtable" (declare (special *monitor-table*)) @@ -39141,7 +39141,7 @@ for example: \defun{monitor-end}{End the monitoring process, we cannot restart} \uses{monitor-end}{*monitor-table*} -<>= +<>= (defun monitor-end () "End the monitoring process. we cannot restart" (declare (special *monitor-table*)) @@ -39155,7 +39155,7 @@ for example: \defun{monitor-results}{Return a list of the monitor-data structures} \uses{monitor-results}{*monitor-table*} -<>= +<>= (defun monitor-results () "return a list of the monitor-data structures" (let (result) @@ -39173,7 +39173,7 @@ for example: \calls{monitor-add}{monitor-delete} \calls{monitor-add}{make-monitor-data} \uses{monitor-add}{*monitor-table*} -<>= +<>= (defun monitor-add (name &optional sourcefile) "add a function to be monitored" (declare (special *monitor-table*)) @@ -39189,7 +39189,7 @@ for example: \defun{monitor-delete}{Remove a function being monitored} \uses{monitor-delete}{*monitor-table*} -<>= +<>= (defun monitor-delete (fn) "Remove a function being monitored" (declare (special *monitor-table*)) @@ -39200,7 +39200,7 @@ for example: \defun{monitor-enable}{Enable all (or optionally one) function for monitoring} \uses{monitor-enable}{*monitor-table*} -<>= +<>= (defun monitor-enable (&optional fn) "enable all (or optionally one) function for monitoring" (declare (special *monitor-table*)) @@ -39219,7 +39219,7 @@ for example: \defun{monitor-disable}{Disable all (optionally one) function for monitoring} \uses{monitor-disable}{*monitor-table*} -<>= +<>= (defun monitor-disable (&optional fn) "disable all (optionally one) function for monitoring" (declare (special *monitor-table*)) @@ -39238,7 +39238,7 @@ for example: \defun{monitor-reset}{Reset the table count for the table (or a function)} \uses{monitor-reset}{*monitor-table*} -<>= +<>= (defun monitor-reset (&optional fn) "reset the table count for the table (or a function)" (declare (special *monitor-table*)) @@ -39254,7 +39254,7 @@ for example: \defun{monitor-incr}{Incr the count of fn by 1} \uses{monitor-incr}{*monitor-table*} -<>= +<>= (defun monitor-incr (fn) "incr the count of fn by 1" (let (data) @@ -39268,7 +39268,7 @@ for example: \defun{monitor-decr}{Decr the count of fn by 1} \uses{monitor-decr}{*monitor-table*} -<>= +<>= (defun monitor-decr (fn) "decr the count of fn by 1" (let (data) @@ -39282,7 +39282,7 @@ for example: \defun{monitor-info}{Return the monitor information for a function} \uses{monitor-info}{*monitor-table*} -<>= +<>= (defun monitor-info (fn) "return the monitor information for a function" (declare (special *monitor-table*)) @@ -39294,7 +39294,7 @@ for example: \catches{monitor-file}{done} \throws{monitor-file}{done} \calls{monitor-file}{monitor-add} -<>= +<>= (defun monitor-file (file) "hang a monitor call on all of the defuns in a file" (let (expr (package "BOOT")) @@ -39315,7 +39315,7 @@ for example: \defun{monitor-untested}{Return a list of the functions with zero count fields} \uses{monitor-untested}{*monitor-table*} -<>= +<>= (defun monitor-untested () "return a list of the functions with zero count fields" (let (result) @@ -39332,7 +39332,7 @@ for example: \defun{monitor-tested}{Return a list of functions with non-zero counts} \calls{monitor-tested}{monitor-delete} \uses{monitor-tested}{*monitor-table*)} -<>= +<>= (defun monitor-tested (&optional delete) "return a list of functions with non-zero counts, optionally deleting them" (let (result) @@ -39349,7 +39349,7 @@ for example: @ \defun{monitor-write}{Write out a list of symbols or structures to a file} -<>= +<>= (defun monitor-write (items file) "write out a list of symbols or structures to a file" (with-open-file (out file :direction :output) @@ -39366,7 +39366,7 @@ for example: \defun{monitor-checkpoint}{Save the *monitor-table* in loadable form} \uses{monitor-checkpoint}{*monitor-table*} \uses{monitor-checkpoint}{*print-package*} -<>= +<>= (defun monitor-checkpoint (file) "save the *monitor-table* in loadable form" (let ((*print-package* t)) @@ -39390,7 +39390,7 @@ for example: @ \defun{monitor-restore}{restore a checkpointed file} -<>= +<>= (defun monitor-restore (file) "restore a checkpointed file" (load file)) @@ -39398,7 +39398,7 @@ for example: @ \defun{monitor-help}{Printing help documentation} -<>= +<>= (defun monitor-help () (format t "~% ;;; MONITOR @@ -39512,7 +39512,7 @@ for example: \subsection{Monitoring algebra files} \defun{monitor-dirname}{Monitoring algebra code.lsp files} \uses{monitor-dirname}{*monitor-nrlibs*} -<>= +<>= (defun monitor-dirname (args) "expects a list of 1 libstream (loadvol's arglist) and monitors the source" (let (name) @@ -39527,7 +39527,7 @@ for example: @ \defun{monitor-autoload}{Monitor autoloaded files} -<>= +<>= (defun monitor-autoload () "traces autoload of algebra to monitor corresponding source files" (trace (vmlisp::loadvol @@ -39538,7 +39538,7 @@ for example: \defun{monitor-nrlib}{Monitor an nrlib} \uses{monitor-nrlib}{*monitor-table*} -<>= +<>= (defun monitor-nrlib (nrlib) "takes an nrlib name as a string (eg POLY) and returns a list of monitor-data structures from that source file" @@ -39557,7 +39557,7 @@ for example: @ \defun{monitor-libname}{Given a monitor-data item, extract the nrlib name} -<>= +<>= (defun monitor-libname (item) "given a monitor-data item, extract the nrlib name" (pathname-name (car (last @@ -39566,7 +39566,7 @@ for example: @ \defun{monitor-exposedp}{Is this an exposed algebra function?} -<>= +<>= (defun monitor-exposedp (fn) "exposed functions have more than 1 semicolon. given a symbol, count them" (> (count #\; (symbol-name fn)) 1)) @@ -39580,7 +39580,7 @@ This needs to work off the internal exposure list, not the file. \catches{monitor-readinterp}{done} \throws{monitor-readinterp}{done} \uses{monitor-readinterp}{*monitor-domains*} -<>= +<>= (defun monitor-readinterp () "read interp.exposed to initialize *monitor-domains* to exposed domains. this is the default action. adding or deleting domains from the list @@ -39613,7 +39613,7 @@ This needs to work off the internal exposure list, not the file. \defun{monitor-report}{Generate a report of the monitored domains} \calls{monitor-report}{monitor-readinterp} \uses{monitor-report}{*monitor-domains*} -<>= +<>= (defun monitor-report () "generate a report of the monitored activity for domains in *monitor-domains*" (let (nrlibs nonzero total) @@ -39655,7 +39655,7 @@ This needs to work off the internal exposure list, not the file. @ \defun{monitor-parse}{Parse an )abbrev expression for the domain name} -<>= +<>= (defun monitor-parse (expr) (let (point1 point2) (setq point1 (position #\space expr :test #'char=)) @@ -39672,7 +39672,7 @@ This needs to work off the internal exposure list, not the file. \throws{monitor-spadfile}{done} \calls{monitor-spadfile}{monitor-parse} \uses{monitor-spadfile}{*monitor-domains*} -<>= +<>= (defun monitor-spadfile (name) "given a spad file, report all nrlibs it creates" (let (expr) @@ -39690,7 +39690,7 @@ This needs to work off the internal exposure list, not the file. \defun{monitor-percent}{Print percent of functions tested} \uses{monitor-percent}{*monitor-table*} -<>= +<>= (defun monitor-percent () "Print percent of functions tested" (let (nonzero total) @@ -39710,7 +39710,7 @@ This needs to work off the internal exposure list, not the file. \defun{monitor-apropos}{Find all monitored symbols containing the string} \uses{monitor-apropos}{*monitor-table*} -<>= +<>= (defun monitor-apropos (str) "given a string, find all monitored symbols containing the string the search is case-insensitive. returns a list of monitor-data items" @@ -39736,9 +39736,16 @@ This needs to work off the internal exposure list, not the file. (in-package "BOOT") <> +;;; level 0 macros + +<> +<> +<> +<> + +;;; above level 0 macros + <> -<> -<> <> <> <> @@ -39789,8 +39796,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> <> <> <> @@ -39803,13 +39808,290 @@ This needs to work off the internal exposure list, not the file. <> <> +;;; layer 0 (all common lisp) + +<> +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> + +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> + +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> +<> +<> +<> +<> +<> +<> + +<> + +;;; above level 0 + <> <> <> -<> -<> -<> -<> <> <> <> @@ -39823,11 +40105,8 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> <> <> -<> <> <> @@ -39835,17 +40114,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> <> <> @@ -39853,7 +40121,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -39861,7 +40128,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -39879,21 +40145,13 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> -<> -<> <> -<> -<> -<> -<> <> <> <> -<> <> <> <> @@ -39917,14 +40175,12 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> <> <> <> -<> <> <> <> @@ -39947,13 +40203,9 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> -<> <> -<> -<> <> <> @@ -39962,7 +40214,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -39978,36 +40229,17 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> -<> <> <> <> -<> <> -<> <> -<> -<> <> <> <> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> <> -<> -<> <> <> @@ -40017,36 +40249,21 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> -<> <> <> -<> -<> <> <> -<> <> <> <> -<> -<> <> -<> <> <> -<> -<> -<> -<> -<> <> <> -<> <> -<> <> <> <> @@ -40060,7 +40277,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40076,40 +40292,30 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> <> -<> <> <> -<> <> <> -<> <> <> <> <> <> <> -<> <> -<> -<> <> <> <> -<> <> <> -<> <> <> <> <> -<> <> <> <> @@ -40127,15 +40333,9 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> -<> -<> -<> -<> -<> <> <> <> @@ -40149,7 +40349,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40159,7 +40358,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40172,8 +40370,6 @@ This needs to work off the internal exposure list, not the file. <> <> -<> -<> <> <> @@ -40182,32 +40378,14 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> -<> -<> -<> <> -<> -<> -<> -<> <> <> <> <> <> <> -<> -<> <> -<> -<> -<> -<> -<> -<> -<> <> <> <> @@ -40227,20 +40405,16 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> <> -<> <> <> -<> <> <> <> <> -<> <> <> <> @@ -40248,44 +40422,13 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> -<> <> <> <> <> <> <> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> -<> <> <> <> @@ -40299,19 +40442,15 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> <> -<> <> <> <> <> <> -<> -<> <> <> <> @@ -40323,14 +40462,12 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> <> <> <> -<> <> <> <> @@ -40342,7 +40479,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40382,7 +40518,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40411,7 +40546,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40441,9 +40575,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> -<> <> <> <> @@ -40456,7 +40587,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40523,10 +40653,8 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> -<> <> <> <> @@ -40543,18 +40671,11 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> -<> <> -<> -<> <> <> <> <> -<> -<> <> <> <> @@ -40562,7 +40683,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40570,49 +40690,34 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> <> <> <> <> -<> -<> <> <> <> <> -<> -<> <> <> <> <> -<> <> <> <> <> -<> -<> <> <> <> -<> <> <> <> <> -<> <> <> -<> -<> <> <> <> -<> -<> <> <> <> @@ -40621,9 +40726,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> -<> <> <> <> @@ -40632,9 +40734,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> -<> <> <> <> @@ -40645,71 +40744,49 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> <> -<> <> -<> <> <> <> <> <> <> -<> -<> <> <> <> -<> -<> <> <> <> <> -<> <> <> <> <> -<> <> <> <> -<> -<> <> -<> -<> <> <> -<> -<> <> <> <> <> <> -<> -<> <> <> <> -<> <> <> <> <> -<> -<> <> <> -<> <> -<> <> <> <> @@ -40722,7 +40799,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40730,37 +40806,27 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> <> <> <> -<> <> <> <> <> <> -<> -<> <> -<> <> <> <> <> <> <> -<> -<> <> <> -<> <> <> <> <> -<> <> <> <> @@ -40787,15 +40853,9 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> <> -<> <> <> -<> -<> -<> <> <> <> @@ -40806,7 +40866,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40836,23 +40895,19 @@ This needs to work off the internal exposure list, not the file. <> <> -<> <> <> <> <> -<> <> <> <> -<> <> <> <> <> <> -<> <> <> <> @@ -40860,13 +40915,10 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> -<> <> <> <> -<> <> <> <> @@ -40883,7 +40935,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40899,9 +40950,7 @@ This needs to work off the internal exposure list, not the file. <> <> -<> <> -<> <> <> <> @@ -40915,7 +40964,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40943,8 +40991,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> <> <> <> @@ -40953,7 +40999,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -40973,8 +41018,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> <> <> <> @@ -40987,14 +41030,12 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> <> <> <> -<> <> <> <> @@ -41026,11 +41067,8 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> -<> -<> <> <> <> @@ -41051,19 +41089,13 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> -<> -<> <> <> <> <> -<> <> <> <> -<> -<> <> <> <> @@ -41074,7 +41106,6 @@ This needs to work off the internal exposure list, not the file. <> <> <> -<> <> <> <> @@ -41149,7 +41180,6 @@ This needs to work off the internal exposure list, not the file. <> -<> <> <> <> diff --git a/changelog b/changelog index d42be0c..52e0bb5 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20100904 tpd src/axiom-website/patches.html 20100904.03.tpd.patch +20100904 tpd books/bookvol5 mark pure common lisp routines 20100904 tpd src/axiom-website/patches.html 20100904.02.tpd.patch 20100904 tpd books/bookvolbib add Steele [Ste90] 20100904 tpd src/axiom-website/patches.html 20100904.01.tpd.patch diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 8117f62..4493797 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -3104,6 +3104,8 @@ books/bookvol9 treeshake compiler
20100904.01.tpd.patch src/interp/*.pamphlet remove memq
20100904.02.tpd.patch -books/bookvolbib add Steele [Ste90] +books/bookvolbib add Steele [Ste90]
+20100904.03.tpd.patch +books/bookvol5 mark pure common lisp routines