diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index 96ae01e..187e50b 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -36,7 +36,7 @@ %% %% defun marks a function definition and adds it to the index %% -\newcommand{\defun}[2]{% e.g. \defun{functionname} +\newcommand{\defun}[2]{% e.g. \defun{functionname}{functionname} \subsection{defun #2}% \label{#1}% \index{#1}% @@ -44,6 +44,17 @@ \index{#1!defun}} %% +%% defunsec marks a function definition and adds it to the index +%% It assumes that the second argument is a section title. +%% +\newcommand{\defunsec}[2]{% e.g. \defunsec{functionname}{section title} +\subsection{#2}% +\label{#1}% +\index{#1}% +\index{defun!#1}% +\index{#1!defun}} + +%% %% defmacro marks a macro definition and adds it to the index %% \newcommand{\defmacro}[1]{% e.g. \defmacro{functionname} @@ -367,12 +378,13 @@ itself (don't break this) and never exits. \section{Variables Used} \section{Data Structures} \section{Functions} -\defun{set-restart-hook}{set-restart-hook} +\defunsec{set-restart-hook}{Set the restart hook} 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) #+Lucid (setq boot::restart-hook 'restart) 'restart @@ -471,9 +483,10 @@ information is initialized. (|spad|)) @ -\defun{spad}{Starts the interpreter but do not read in profiles} +\defunsec{spad}{Starts the interpreter but do not read in profiles} <>= (defun |spad| () + "Starts the interpreter but do not read in profiles" (let (|$PrintCompilerMessageIfTrue| |$inLispVM|) (declare (special |$PrintCompilerMessageIfTrue| |$inLispVM|)) (setq |$PrintCompilerMessageIfTrue| nil) @@ -671,9 +684,10 @@ will end up as a recursive call to ourselves. @ \section{Helper Functions} -\defun{getenviron}{getenviron} +\defunsec{getenviron}{Get the value of an evironment variable} <>= (defun getenviron (var) + "Get the value of an evironment variable" #+allegro (sys::getenv (string var)) #+clisp (ext:getenv (string var)) #+(or cmu scl) @@ -721,7 +735,7 @@ This function performs those setup commands. @ -\pagehead{initroot}{Set spadroot to be the AXIOM shell variable} +\defunsec{initroot}{Set spadroot to be the AXIOM shell variable} Sets up the system to use the {\bf AXIOM} shell variable if we can and default to the {\bf \$spadroot} variable (which was the value of the {\bf AXIOM} shell variable at build time) if we can't. @@ -729,14 +743,15 @@ of the {\bf AXIOM} shell variable at build time) if we can't. Called from \fnref{restart}. <>= (defun initroot (&optional (newroot (getenviron "AXIOM"))) + "Set spadroot to be the AXIOM shell variable" (declare (special $spadroot)) (reroot (or newroot $spadroot (error "setenv AXIOM or (setq $spadroot)")))) @ -\defun{intloopPrefix?}{Does the string start with this prefix?} +\defunsec{intloopPrefix?}{Does the string start with this prefix?} If the prefix string is the same as the whole string initial characters -(ignoring spaces in the whole string) then we return the whole string +--R(ignoring spaces in the whole string) then we return the whole string minus any leading spaces. <>= (defun |intloopPrefix?| (prefix whole) @@ -748,8 +763,20 @@ minus any leading spaces. newwhole)))) @ +\defunsec{get-current-directory}{Get the current directory} +<>= +#+:cmu +(defun get-current-directory () + "Get the current directory" + (namestring (extensions::default-directory))) + +#+(or :akcl :gcl) +(defun get-current-directory () + "Get the current directory" + (namestring (truename ""))) -\defun{make-absolute-filename}{Prepend the absolute path to a filename} +@ +\defunsec{make-absolute-filename}{Prepend the absolute path to a filename} Prefix a filename with the {\bf AXIOM} shell variable. <>= (defun make-absolute-filename (name) @@ -759,9 +786,10 @@ Prefix a filename with the {\bf AXIOM} shell variable. @ -\defun{makeInitialModemapFrame}{makeInitialModemapFrame} +\defunsec{makeInitialModemapFrame}{Make the initial modemap frame} <>= (defun |makeInitialModemapFrame| () + "Make the initial modemap frame" (declare (special |$InitialModemapFrame|)) (copy |$InitialModemapFrame|)) @@ -780,29 +808,31 @@ character. Otherwise, it returns nil. @ -\defun{reclaim}{reclaim} +\defunsec{reclaim}{Call the garbage collector} Call the garbage collector on various platforms. <>= #+abcl -(defun reclaim () (ext::gc)) +(defun reclaim () "Call the garbage collector" (ext::gc)) #+:allegro -(defun reclaim () (excl::gc t)) +(defun reclaim () "Call the garbage collector" (excl::gc t)) #+:CCL -(defun reclaim () (gc)) +(defun reclaim () "Call the garbage collector" (gc)) #+clisp -(defun reclaim () (#+lisp=cl ext::gc #-lisp=cl lisp::gc)) +(defun reclaim () + "Call the garbage collector" + (#+lisp=cl ext::gc #-lisp=cl lisp::gc)) #+(or :cmulisp :cmu) -(defun reclaim () (ext:gc)) +(defun reclaim () "Call the garbage collector" (ext:gc)) #+cormanlisp -(defun reclaim () (cl::gc)) +(defun reclaim () "Call the garbage collector" (cl::gc)) #+(OR IBCL KCL GCL) -(defun reclaim () (si::gbc t)) +(defun reclaim () "Call the garbage collector" (si::gbc t)) #+lispworks -(defun reclaim () (hcl::normal-gc)) +(defun reclaim () "Call the garbage collector" (hcl::normal-gc)) #+Lucid -(defun reclaim () (lcl::gc)) +(defun reclaim () "Call the garbage collector" (lcl::gc)) #+sbcl -(defun reclaim () (sb-ext::gc)) +(defun reclaim () "Call the garbage collector" (sb-ext::gc)) @ \defun{reroot}{reroot} @@ -865,7 +895,7 @@ this is what the current code does so I won't change it. @ -\defun{mkprompt}{Show the Axiom prompt} +\defunsec{mkprompt}{Show the Axiom prompt} <>= (defun mkprompt () "Show the Axiom prompt" @@ -1071,10 +1101,10 @@ They appear to only be used to initialize the boot dollar variables. @ -\defun{serverReadLine}{serverReadLine} +\defunsec{serverReadLine}{READ-LINE in an Axiom server system} <>= (defun |serverReadLine| (stream) - "used in place of READ-LINE in a scratchpad server system." + "used in place of READ-LINE in a Axiom server system." (let (in-stream *eof* l framename currentframe form stringbuf line) (declare (special in-stream *eof* |$SpadServer| |$EndServerSession| |$NeedToSignalSessionManager| |$SessionManager| |$EndOfOutput| @@ -1145,9 +1175,10 @@ They appear to only be used to initialize the boot dollar variables. @ -\defun{intloopInclude}{Include a file into the stream} +\defunsec{intloopInclude}{Include a file into the stream} <>= (defun |intloopInclude| (name n) + "Include a file into the stream" (with-open-file (st name) (|intloopInclude0| st name n))) @ @@ -5364,7 +5395,7 @@ in the algebra so we keep them as functions. @ \section{Functions} -\defun{initializeInterpreterFrameRing} +\defunsec{initializeInterpreterFrameRing} {Initializing the Interpreter Frame Ring} Now that we know what a frame looks like we need a function to @@ -5379,6 +5410,7 @@ initial values. <>= (defun |initializeInterpreterFrameRing| () + "Initializing the Interpreter Frame Ring" (declare (special |$interpreterFrameName| |$interpreterFrameRing|)) (setq |$interpreterFrameName| '|initial|) (setq |$interpreterFrameRing| @@ -5387,34 +5419,35 @@ initial values. nil) @ -\defun{frameNames} -{Creating a List of all of the Frame Names} +\defunsec{frameNames}{Creating a List of all of the Frame Names} This function simply walks across the frame in the frame ring and returns a list of the name of each frame. <>= (defun |frameNames| () + "Creating a List of all of the Frame Names" (declare (special |$interpreterFrameRing|)) (mapcar #'frameName |$interpreterFrameRing|)) @ -\defun{frameEnvironment} -{Get Named Frame Environment (aka Interactive)} +\defunsec{frameEnvironment}{Get Named Frame Environment (aka Interactive)} If the frame is found we return the environment portion of the frame otherwise we construct an empty environment and return it. The initial values of an empty frame are created here. This function returns a single frame that will be placed in the frame ring. <>= (defun |frameEnvironment| (fname) + "Get Named Frame Environment (aka Interactive)" (let ((frame (|findFrameInRing| fname))) (if frame (frameInteractive frame) (list (list nil))))) @ -\defun{emptyInterpreterFrame}{emptyInterpreterFrame} +\defunsec{emptyInterpreterFrame}{Create a new, empty Interpreter Frame} <>= (defun |emptyInterpreterFrame| (name) + "Create a new, empty Interpreter Frame" (declare (special |$HiFiAccess| |$HistList| |$HistListLen| |$HistListAct| |$HistRecord| |$localExposureDataDefault|)) (list name ; frame name @@ -5429,7 +5462,7 @@ returns a single frame that will be placed in the frame ring. (copy-seq |$localExposureDataDefault|))) ; $localExposureData @ -\defun{createCurrentInterpreterFrame} +\defunsec{createCurrentInterpreterFrame} {Collecting up the Environment into a Frame} We can collect up all the current environment information into @@ -5438,6 +5471,7 @@ values of the global variables and returns this as a frame element. <>= (defun |createCurrentInterpreterFrame| () + "Collecting up the Environment into a Frame" (declare (special |$interpreterFrameName| |$InteractiveFrame| |$IOindex| |$HiFiAccess| |$HistList| |$HistListLen| |$HistListAct| |$HistRecord| |$internalHistoryTable| |$localExposureData|)) @@ -5455,12 +5489,13 @@ values of the global variables and returns this as a frame element. @ -\defun{updateFromCurrentInterpreterFrame}{Updating from the Current Frame} +\defunsec{updateFromCurrentInterpreterFrame}{Update from the Current Frame} The frames are kept on a circular list. The first element on that list is known as ``the current frame''. This will initialize all of the interesting interpreter data structures from that frame. <>= (defun |updateFromCurrentInterpreterFrame| () + "Update from the Current Frame" (let (tmp1) (declare (special |$interpreterFrameRing| |$interpreterFrameName| |$InteractiveFrame| |$IOindex| |$HiFiAccess| |$HistList| |$HistListLen| @@ -5483,11 +5518,12 @@ of the interesting interpreter data structures from that frame. ,#(|bright| |$interpreterFrameName|)))))) @ -\defun{findFrameInRing}{Find a Frame in the Frame Ring by Name} +\defunsec{findFrameInRing}{Find a Frame in the Frame Ring by Name} Each frame contains its name as the 0th element. We simply walk all the frames and if we find one we return it. <>= (defun |findFrameInRing| (name) + "Find a Frame in the Frame Ring by Name" (let (result) (declare (special |$interpreterFrameRing|)) (dolist (frame |$interpreterFrameRing|) @@ -5497,29 +5533,29 @@ the frames and if we find one we return it. @ -\defun{updateCurrentInterpreterFrame}{Update the Current Interpreter Frame} +\defunsec{updateCurrentInterpreterFrame}{Update the Current Interpreter Frame} This function collects the normal contents of the world into a frame object, places it first on the frame list, and then sets the current values of the world from the frame object. <>= (defun |updateCurrentInterpreterFrame| () + "Update the Current Interpreter Frame" (declare (special |$interpreterFrameRing|)) (rplaca |$interpreterFrameRing| (|createCurrentInterpreterFrame|)) (|updateFromCurrentInterpreterFrame|)) @ -\defun{nextInterpreterFrame}{nextInterpreterFrame} - +\defunsec{nextInterpreterFrame}{Move to the next Interpreter Frame in Ring} This function updates the current frame to make sure all of the current information is recorded. If there are more frame elements in the list then this will destructively move the current frame to the end of the list, that is, assume the frame list reads (1 2 3) this function will destructively change it to (2 3 1). - Note: the nconc2 function destructively inserts the second list at the end of the first. <>= (defun |nextInterpreterFrame| () + "Move to the next Interpreter Frame in Ring" (declare (special |$interpreterFrameRing|)) (when (cdr |$interpreterFrameRing|) (setq |$interpreterFrameRing| @@ -5528,9 +5564,10 @@ end of the first. (|updateFromCurrentInterpreterFrame|))) @ -\defun{changeToNamedInterpreterFrame}{changeToNamedInterpreterFrame} +\defunsec{changeToNamedInterpreterFrame}{Change to the Named Interpreter Frame} <>= (defun |changeToNamedInterpreterFrame| (name) + "Change to the Named Interpreter Frame" (let (frame) (declare (special |$interpreterFrameRing|)) (|updateCurrentInterpreterFrame|) @@ -5541,9 +5578,11 @@ end of the first. (|updateFromCurrentInterpreterFrame|)))) @ -\defun{previousInterpreterFrame}{previousInterpreterFrame} +\defunsec{previousInterpreterFrame} +{Move to the previous Interpreter Frame in Ring} <>= (defun |previousInterpreterFrame| () + "Move to the previous Interpreter Frame in Ring" (let (tmp1 l b) (declare (special |$interpreterFrameRing|)) (|updateCurrentInterpreterFrame|) @@ -5555,9 +5594,10 @@ end of the first. (|updateFromCurrentInterpreterFrame|)))) @ -\defun{addNewInterpreterFrame}{addNewInterpreterFrame} +\defunsec{addNewInterpreterFrame}{Add a New Interpreter Frame} <>= (defun |addNewInterpreterFrame| (name) + "Add a New Interpreter Frame" (declare (special |$interpreterFrameRing|)) (if (null name) (|throwKeyedMsg| 's2iz0018 nil) ; you must provide a name for new frame @@ -5573,9 +5613,10 @@ end of the first. ($erase (|histFileName|))))) @ -\defun{closeInterpreterFrame}{closeInterpreterFrame} +\defunsec{closeInterpreterFrame}{Close an Interpreter Frame} <>= (defun |closeInterpreterFrame| (name) + "Close an Interpreter Frame" (declare (special |$interpreterFrameRing| |$interpreterFrameName|)) (let (ifr found) (if (null (cdr |$interpreterFrameRing|)) @@ -5601,9 +5642,10 @@ end of the first. (|updateFromCurrentInterpreterFrame|))))) @ -\defun{displayFrameNames}{displayFrameNames} +\defunsec{displayFrameNames}{Display the Frame Names} <>= (defun |displayFrameNames| () + "Display the Frame Names" (declare (special |$interpreterFrameRing|)) (let (t1) (setq t1 @@ -5612,9 +5654,10 @@ end of the first. (|sayKeyedMsg| 's2iz0024 (list (apply #'append t1))))) @ -\defun{importFromFrame}{importFromFrame} +\defunsec{importFromFrame}{Import items from another frame} <>= (defun |importFromFrame| (args) + "Import items from another frame" (prog (temp1 fname fenv x v props vars plist prop val m) (declare (special |$interpreterFrameRing|)) (when (and args (atom args)) (setq args (cons args nil))) @@ -5695,15 +5738,17 @@ end of the first. (cons fname nil)))))))))) @ -\defun{frame}{frame} +\defunsec{frame}{The top level frame command} <>= (defun |frame| (l) + "The top level frame command" (|frameSpad2Cmd| l)) @ -\defun{frameSpad2Cmd}{frameSpad2Cmd} +\defunsec{frameSpad2Cmd}{The top level frame command handler} <>= (defun |frameSpad2Cmd| (args) + "The top level frame command handler" (let (frameArgs arg a) (declare (special |$options|)) (setq frameArgs '(|drop| |import| |last| |names| |new| |next|)) @@ -5930,16 +5975,18 @@ Available algebra help topics are: @ \section{Functions} -\defun{help}{help} +\defunsec{help}{The top level help command} <>= (defun |help| (l) + "The top level help command" (|helpSpad2Cmd| l)) @ -\defun{helpSpad2Cmd}{helpSpad2Cmd} +\defunsec{helpSpad2Cmd}{The top level help command handler} <>= (defun |helpSpad2Cmd| (|args|) + "The top level help command handler" (unless (|newHelpSpad2Cmd| |args|) (|sayKeyedMsg| 's2iz0025 (cons |args| nil)))) @@ -6237,18 +6284,20 @@ environment to \verb|$HistList| and \verb|$HistRecord|. (setq |$HistRecord| nil))) @ -\defun{history}{history} +\defunsec{history}{The top level history command} <>= (defun |history| (l) + "The top level history command" (declare (special |$options|)) (if (or l (null |$options|)) (|sayKeyedMsg| 's2ih0006 nil) ; syntax error (|historySpad2Cmd|))) @ -\defun{historySpad2Cmd}{historySpad2Cmd} +\defunsec{historySpad2Cmd}{The top level history command handler} <>= (defun |historySpad2Cmd| () + "The top level history command handler" (let (histOptions opts opt optargs x) (declare (special |$options| |$HiFiAccess| |$IOindex|)) (setq histOptions @@ -6861,9 +6910,10 @@ Also used in the output routines. (t (|throwKeyedMsg| 's2ih0004 nil))))) ; history not on @ -\defun{readHiFi}{Read the history file using index n} +\defunsec{readHiFi}{Read the history file using index n} <>= (defun |readHiFi| (n) + "Read the history file using index n" (let (pair HiFi vec) (declare (special |$useInternalHistoryTable| |$internalHistoryTable|)) (if |$useInternalHistoryTable| @@ -6884,9 +6934,10 @@ Also used in the output routines. vec)) @ -\defun{writeHiFi}{Writes information of the current step to history file} +\defunsec{writeHiFi}{Writes information of the current step to history file} <>= (defun |writeHiFi| () + "Writes information of the current step to history file" (let (HiFi) (declare (special |$useInternalHistoryTable| |$internalHistoryTable| |$IOindex| |$HistRecord| |$currentLine|)) @@ -6907,9 +6958,10 @@ Also used in the output routines. (rshut HiFi))))) @ -\defun{disableHist}{Disable history if an error occurred} +\defunsec{disableHist}{Disable history if an error occurred} <>= (defun |disableHist| () + "Disable history if an error occurred" (declare (special |$HiFiAccess|)) (cond ((null |$HiFiAccess|) @@ -6945,8 +6997,8 @@ Lisplib output transformations Some types of objects cannot be saved by LISP/VM in lisplibs. These functions transform an object to a writable form and back. -\defun{SPADRWRITE0}{SPADRWRITE0} -<>= +\defun{spadrwrite0}{spadrwrite0} +<>= (defun spadrwrite0 (vec item stream) (let (val) (setq val (|safeWritify| item)) @@ -6957,8 +7009,8 @@ These functions transform an object to a writable form and back. item)))) @ -\defun{SPADRWRITE}{SPADRWRITE} -<>= +\defun{spadrwrite}{spadrwrite} +<>= (defun spadrwrite (vec item stream) (let (val) (setq val (spadrwrite0 vec item stream)) @@ -6967,8 +7019,8 @@ These functions transform an object to a writable form and back. item))) @ -\defun{SPADRREAD}{SPADRREAD} -<>= +\defun{spadrread}{spadrread} +<>= (defun spadrread (vec stream) (|dewritify| (|rread| vec stream nil))) @@ -7495,10 +7547,11 @@ absolute or relative pathname. n))) @ -\defun{ncloopIncFileName}{ncloopIncFileName} -Returns the first non-blank substring of the given string. +\defunsec{ncloopIncFileName} +{Returns the first non-blank substring of the given string} <>= (defun |ncloopIncFileName| (string) + "Returns the first non-blank substring of the given string" (let (fn) (unless (setq fn (|incFileName| string)) (write-line (concat string " not found"))) @@ -7506,31 +7559,34 @@ Returns the first non-blank substring of the given string. @ -\defun{ncloopInclude}{ncloopInclude} -Open the file and read it in. The ncloopInclude0 function is part +\defunsec{ncloopInclude}{Open the include file and read it in} +The ncloopInclude0 function is part of the parser and lives in int-top.boot. <>= (defun |ncloopInclude| (name n) - (with-open-file (st name) (|ncloopInclude0| st name n))) + "Open the include file and read it in" + (with-open-file (st name) (|ncloopInclude0| st name n))) @ -\defun{incFileName}{incFileName} +\defunsec{incFileName}{Return the include filename} Given a string we return the first token from the string which is the first non-blank substring. <>= (defun |incFileName| (x) + "Return the include filename" (car (|incBiteOff| x))) @ -\defun{incBiteOff}{incBiteOff} +\defunsec{incBiteOff}{Return the next token} Takes a sequence and returns the a list of the first token and the remaining string characters. If there are no remaining string characters the second string is of length 0. Effectively it "bites off" the first token in the string. If the string only 0 or more blanks it returns nil. <>= (defun |incBiteOff| (x) + "Return the next token" (let (blank nonblank) (setq x (string x)) (when (setq nonblank (position #\space x :test-not #'char=)) @@ -7755,15 +7811,18 @@ o )system \fnref{system}} \section{Functions} -\defun{pquit}{pquit} +\defunsec{pquit}{The top level pquit command} <>= -(defun |pquit| () (|pquitSpad2Cmd|)) +(defun |pquit| () + "The top level pquit command" + (|pquitSpad2Cmd|)) @ -\defun{pquitSpad2Cmd}{pquitSpad2Cmd} +\defunsec{pquitSpad2Cmd}{The top level pquit command handler} <>= (defun |pquitSpad2Cmd| () + "The top level pquit command handler" (let ((|$quitCommandType| '|protected|)) (declare (special |$quitCommandType|)) (|quitSpad2Cmd|))) @@ -7829,14 +7888,17 @@ o )system \fnref{system}} \section{Functions} -\defun{quit}{quit} +\defunsec{quit}{The top level quit command} <>= -(defun |quit| () (|quitSpad2Cmd|)) +(defun |quit| () + "The top level quit command" + (|quitSpad2Cmd|)) @ -\defun{quitSpad2Cmd}{quitSpad2Cmd} +\defunsec{quitSpad2Cmd}{The top level quit command handler} <>= (defun |quitSpad2Cmd| () + "The top level quit command handler" (declare (special |$quitCommandType|)) (if (eq |$quitCommandType| '|protected|) (let (x) @@ -7848,9 +7910,11 @@ o )system @ -\defun{leaveScratchpad}{leaveScratchpad} +\defunsec{leaveScratchpad}{Leave the Axiom interpreter} <>= -(defun |leaveScratchpad| () (bye)) +(defun |leaveScratchpad| () + "Leave the Axiom interpreter" + (bye)) @ @@ -8033,7 +8097,7 @@ for system. For more information, issue )help set . \end{verbatim} \section{Variables Used} \section{Functions} -\defun{initializeSetVariables}{initializeSetVariables} +\defunsec{initializeSetVariables}{Initialize the set variables} The argument settree is initially the \verb|$setOption| variable. The fourth element is a union-style switch symbol. The fifth element is usually a variable to set. @@ -8042,6 +8106,7 @@ The seventh element is usually the default value. For more detailed explanations see the list structure section \ref{Theliststructure}. <>= (defun |initializeSetVariables| (settree) + "Initialize the set variables" (dolist (setdata settree) (case (fourth setdata) (FUNCTION @@ -8057,9 +8122,10 @@ explanations see the list structure section \ref{Theliststructure}. @ -\defun{resetWorkspaceVariables}{resetWorkspaceVariables} +\defunsec{resetWorkspaceVariables}{Reset the workspace variables} <>= (defun |resetWorkspaceVariables| () + "Reset the workspace variables" (declare (special /countlist /editfile /sourcefiles |$sourceFiles| /pretty /spacelist /timerlist |$existingFiles| |$functionTable| $boot |$compileMapFlag| |$echoLineStack| |$operationNameList| |$slamFlag| @@ -8095,9 +8161,10 @@ explanations see the list structure section \ref{Theliststructure}. @ -\defun{displaySetOptionInformation}{displaySetOptionInformation} +\defunsec{displaySetOptionInformation}{Display the set option information} <>= (defun |displaySetOptionInformation| (arg setdata) + "Display the set option information" (let (current) (declare (special $linelength)) (cond @@ -8142,9 +8209,10 @@ explanations see the list structure section \ref{Theliststructure}. @ -\defun{displaySetVariableSettings}{displaySetVariableSettings} +\defunsec{displaySetVariableSettings}{Display the set variable settings} <>= (defun |displaySetVariableSettings| (settree label) + "Display the set variable settings" (let (setoption opt subtree subname) (declare (special $linelength)) (if (eq label '||) @@ -8207,9 +8275,10 @@ explanations see the list structure section \ref{Theliststructure}. @ -\defun{translateYesNo2TrueFalse}{translateYesNo2TrueFalse} +\defunsec{translateYesNo2TrueFalse}{Translate options values to t or nil} <>= (defun |translateYesNo2TrueFalse| (x) + "Translate options values to t or nil" (cond ((|member| x '(|yes| |on|)) t) ((|member| x '(|no| |off|)) nil) @@ -8217,9 +8286,10 @@ explanations see the list structure section \ref{Theliststructure}. @ -\defun{translateTrueFalse2YesNo}{translateTrueFalse2YesNo} +\defunsec{translateTrueFalse2YesNo}{Translate t or nil to option values} <>= (defun |translateTrueFalse2YesNo| (x) + "Translate t or nil to option values" (cond ((eq x t) '|on|) ((null x) '|off|) @@ -8430,9 +8500,10 @@ args arguments for compiling AXIOM code @ \section{Variables Used} \section{Functions} -\defun{setOutputLibrary}{setOutputLibrary} +\defunsec{setOutputLibrary}{The set output command handler} <>= (defun |setOutputLibrary| (arg) + "The set output command handler" (let (fn) (declare (special |$outputLibraryName|)) (cond @@ -8447,9 +8518,10 @@ args arguments for compiling AXIOM code @ -\defun{describeOutputLibraryArgs}{describeOutputLibraryArgs} +\defunsec{describeOutputLibraryArgs}{Describe the set output library arguments} <>= (defun |describeOutputLibraryArgs| () + "Describe the set output library arguments" (|sayBrightly| (list '|%b| ")set compiler output library" '|%d| "is used to tell the compiler where to place" @@ -8460,10 +8532,11 @@ args arguments for compiling AXIOM code @ -\defun{openOutputLibrary}{openOutputLibrary} +\defunsec{openOutputLibrary}{Open the output library} The input-libraries and output-library are now truename based. <>= (defun |openOutputLibrary| (lib) + "Open the output library" (declare (special output-library input-libraries)) (|dropInputLibrary| lib) (setq output-library (truename lib)) @@ -8495,10 +8568,11 @@ The input-libraries and output-library are now truename based. \section{Variables Used} \section{Functions} -\defun{setInputLibrary}{setInputLibrary} +\defunsec{setInputLibrary}{The set input library command handler} The input-libraries is now maintained as a list of truenames. <>= (defun |setInputLibrary| (arg) + "The set input library command handler" (declare (special input-libraries)) (let (tmp1 filename act) (cond @@ -8523,9 +8597,10 @@ The input-libraries is now maintained as a list of truenames. @ -\defun{describeInputLibraryArgs}{describeInputLibraryArgs} +\defunsec{describeInputLibraryArgs}{Describe the set input library arguments} <>= (defun |describeInputLibraryArgs| () + "Describe the set input library arguments" (|sayBrightly| (list '|%b| ")set compiler input add library" '|%d| "is used to tell AXIOM to add" @@ -8541,19 +8616,21 @@ The input-libraries is now maintained as a list of truenames. @ -\defun{addInputLibrary}{addInputLibrary} +\defunsec{addInputLibrary}{Add the input library to the list} The input-libraries variable is now maintained as a list of truenames. <>= (defun |addInputLibrary| (lib) + "Add the input library to the list" (declare (special input-libraries)) (|dropInputLibrary| lib) (push (truename lib) input-libraries)) @ -\defun{dropInputLibrary}{dropInputLibrary} +\defunsec{dropInputLibrary}{Drop an input library from the list} <>= (defun |dropInputLibrary| (lib) + "Drop an input library from the list" (declare (special input-libraries)) (setq input-libraries (delete (truename lib) input-libraries :test #'equal))) @@ -8596,9 +8673,10 @@ The input-libraries variable is now maintained as a list of truenames. \section{Variables Used} \section{Functions} -\defun{setAsharpArgs}{setAsharpArgs} +\defunsec{setAsharpArgs}{Handle the set compiler command arguments} <>= (defun |setAsharpArgs| (arg) + "Handle the set compiler command arguments" (declare (special |$asharpCmdlineFlags|)) (cond ((eq arg '|%initialize%|) @@ -8611,9 +8689,10 @@ The input-libraries variable is now maintained as a list of truenames. @ -\defun{describeAsharpArgs}{describeAsharpArgs} +\defunsec{describeAsharpArgs}{Describe the set compiler command arguments} <>= (defun |describeAsharpArgs| () + "Describe the set compiler command arguments" (declare (special |$asharpCmdlineFlags|)) (|sayBrightly| (list '|%b| ")set compiler args " @@ -8670,9 +8749,10 @@ The input-libraries variable is now maintained as a list of truenames. \section{Variables Used} \section{Functions} -\defun{setExpose}{setExpose} +\defunsec{setExpose}{The top level set expose command handler} <>= (defun |setExpose| (arg) + "The top level set expose command handler" (let (fnargs fn) (cond ((eq arg '|%initialize%|) (|loadExposureGroupData|)) @@ -8698,9 +8778,10 @@ The input-libraries variable is now maintained as a list of truenames. @ -\defun{setExposeAdd}{setExposeAdd} +\defunsec{setExposeAdd}{The top level set expose add command handler} <>= (defun |setExposeAdd| (arg) + "The top level set expose add command handler" (declare (special $linelength)) (let (fnargs fn) (cond @@ -8723,11 +8804,12 @@ The input-libraries variable is now maintained as a list of truenames. @ -\defun{setExposeAddGroup}{setExposeAddGroup} +\defunsec{setExposeAddGroup}{Expose a group} Note that \verb|$localExposureData| is a vector of lists. It consists of [exposed groups,exposed constructors,hidden constructors] <>= (defun |setExposeAddGroup| (arg) + "Expose a group" (declare (special |$globalExposureGroupAlist| |$localExposureData| |$interpreterFrameName| $linelength)) (if (null arg) @@ -8768,9 +8850,10 @@ It consists of [exposed groups,exposed constructors,hidden constructors] @ -\defun{setExposeAddConstr}{setExposeAddConstr} +\defunsec{setExposeAddConstr}{The top level set expose add constructor handler} <>= (defun |setExposeAddConstr| (arg) + "The top level set expose add constructor handler" (declare (special $linelength |$localExposureData| |$interpreterFrameName|)) (if (null arg) (progn @@ -8796,9 +8879,10 @@ It consists of [exposed groups,exposed constructors,hidden constructors] @ -\defun{setExposeDrop}{setExposeDrop} +\defunsec{setExposeDrop}{The top level set expose drop handler} <>= (defun |setExposeDrop| (arg) + "The top level set expose drop handler" (declare (special $linelength)) (let (fnargs fn) (cond @@ -8819,9 +8903,10 @@ It consists of [exposed groups,exposed constructors,hidden constructors] @ -\defun{setExposeDropGroup}{setExposeDropGroup} +\defunsec{setExposeDropGroup}{The top level set expose drop group handler} <>= (defun |setExposeDropGroup| (arg) + "The top level set expose drop group handler" (declare (special $linelength |$localExposureData| |$interpreterFrameName| |$globalExposureGroupAlist|)) (if (null arg) @@ -8854,9 +8939,11 @@ It consists of [exposed groups,exposed constructors,hidden constructors] (t (|sayKeyedMsg| 's2iz0049h (list x ))))))) @ -\defun{setExposeDropConstr}{setExposeDropConstr} +\defunsec{setExposeDropConstr} +{The top level set expose drop constructor handler} <>= (defun |setExposeDropConstr| (arg) + "The top level set expose drop constructor handler" (declare (special $linelength |$localExposureData| |$interpreterFrameName|)) (if (null arg) (progn @@ -8886,39 +8973,42 @@ It consists of [exposed groups,exposed constructors,hidden constructors] @ -\defun{displayExposedGroups}{displayExposedGroups} +\defunsec{displayExposedGroups}{Display exposed groups} <>= (defun |displayExposedGroups| () - (declare (special |$interpreterFrameName| |$localExposureData|)) - (|sayKeyedMsg| 's2iz0049a (list |$interpreterFrameName|)) - (if (null (elt |$localExposureData| 0)) - (|centerAndHighlight| "there are no exposed groups") - (dolist (c (elt |$localExposureData| 0)) - (|centerAndHighlight| c)))) + "Display exposed groups" + (declare (special |$interpreterFrameName| |$localExposureData|)) + (|sayKeyedMsg| 's2iz0049a (list |$interpreterFrameName|)) + (if (null (elt |$localExposureData| 0)) + (|centerAndHighlight| "there are no exposed groups") + (dolist (c (elt |$localExposureData| 0)) + (|centerAndHighlight| c)))) @ -\defun{displayExposedConstructors}{displayExposedConstructors} +\defunsec{displayExposedConstructors}{Display exposed constructors} <>= (defun |displayExposedConstructors| () - (declare (special |$localExposureData|)) - (|sayKeyedMsg| 's2iz0049b nil) - (if (null (elt |$localExposureData| 1)) - (|centerAndHighlight| "there are no explicitly exposed constructors") - (dolist (c (elt |$localExposureData| 1)) - (|centerAndHighlight| c)))) + "Display exposed constructors" + (declare (special |$localExposureData|)) + (|sayKeyedMsg| 's2iz0049b nil) + (if (null (elt |$localExposureData| 1)) + (|centerAndHighlight| "there are no explicitly exposed constructors") + (dolist (c (elt |$localExposureData| 1)) + (|centerAndHighlight| c)))) @ -\defun{displayHiddenConstructors}{displayHiddenConstructors} +\defunsec{displayHiddenConstructors}{Display hidden constructors} <>= (defun |displayHiddenConstructors| () - (declare (special |$localExposureData|)) - (|sayKeyedMsg| 's2iz0049c nil) - (if (null (elt |$localExposureData| 2)) - (|centerAndHighlight| "there are no explicitly hidden constructors") - (dolist (c (elt |$localExposureData| 2)) - (|centerAndHighlight| c)))) + "Display hidden constructors" + (declare (special |$localExposureData|)) + (|sayKeyedMsg| 's2iz0049c nil) + (if (null (elt |$localExposureData| 2)) + (|centerAndHighlight| "there are no explicitly hidden constructors") + (dolist (c (elt |$localExposureData| 2)) + (|centerAndHighlight| c)))) @ \section{functions} @@ -8977,10 +9067,11 @@ recurrence specially compile recurrence relations on @ \section{Variables Used} \section{Functions} -\defun{setFunctionsCache}{setFunctionsCache} +\defunsec{setFunctionsCache}{The top level set functions cache handler} \begin{verbatim} <>= (defun |setFunctionsCache| (arg) + "The top level set functions cache handler" (let (|$options| n) (declare (special |$options| |$cacheCount| |$cacheAlist|)) (cond @@ -9009,9 +9100,10 @@ recurrence specially compile recurrence relations on @ -\defun{countCache}{countCache} +\defunsec{countCache}{Display a particular cache count} <>= (defun |countCache| (n) + "Display a particular cache count" (let (tmp1 l cachecountname) (declare (special |$options| |$cacheAlist| |$cacheCount|)) (cond @@ -9038,9 +9130,10 @@ recurrence specially compile recurrence relations on @ -\defun{describeSetFunctionsCache}{describeSetFunctionsCache} +\defunsec{describeSetFunctionsCache}{Describe the set functions cache} <>= (defun |describeSetFunctionsCache| () + "Describe the set functions cache" (|sayBrightly| (list '|%b| ")set functions cache" '|%d| "is used to tell AXIOM how many" @@ -9063,9 +9156,10 @@ recurrence specially compile recurrence relations on @ -\defun{sayAllCacheCounts}{sayAllCacheCounts} +\defunsec{sayAllCacheCounts}{Display all cache counts} <>= (defun |sayAllCacheCounts| () + "Display all cache counts" (let (x n) (declare (special |$cacheCount| |$cacheAlist|)) (|sayCacheCount| nil |$cacheCount|) @@ -9081,9 +9175,10 @@ recurrence specially compile recurrence relations on @ -\defun{sayCacheCount}{sayCacheCount} +\defunsec{sayCacheCount}{Describe the cache counts} <>= (defun |sayCacheCount| (fn n) + "Describe the cache counts" (let (prefix phrase) (setq prefix (cond @@ -9570,9 +9665,10 @@ linker linker arguments (e.g. libraries to search) -lxlf NIL) @ -\defun{setFortTmpDir}{setFortTmpDir} +\defunsec{setFortTmpDir}{The top level set fortran calling tempfile handler} <>= (defun |setFortTmpDir| (arg) + "The top level set fortran calling tempfile handler" (let (mode) (declare (special |$fortranTmpDir|)) (cond @@ -9592,18 +9688,20 @@ linker linker arguments (e.g. libraries to search) -lxlf @ -\defun{validateOutputDirectory}{validateOutputDirectory} +\defunsec{validateOutputDirectory}{Validate the output directory} <>= (defun |validateOutputDirectory| (x) + "Validate the output directory" (let ((dirname (car x))) (when (and (pathname-directory dirname) (null (probe-file dirname))) dirname))) @ -\defun{describeSetFortTmpDir}{describeSetFortTmpDir} +\defunsec{describeSetFortTmpDir}{Describe the set fortran calling tempfile} <>= (defun |describeSetFortTmpDir| () + "Describe the set fortran calling tempfile" (declare (special |$fortranTmpDir|)) (|sayBrightly| (list '|%b| ")set fortran calling tempfile" @@ -15679,9 +15777,10 @@ Properties of r :: (setq |$previousBindings| nil)) @ -\defun{undoCount}{Undo previous n commands} +\defunsec{undoCount}{Undo previous n commands} <>= (defun |undoCount| (n) + "Undo previous n commands" (prog (m) (declare (special |$IOindex|)) (return @@ -15840,10 +15939,11 @@ undoSingleStep(changes,env) == (t pair)) tmp0))))))))))))) @ -\defun{removeUndoLines}{Remove undo lines from hist write} +\defunsec{removeUndoLines}{Remove undo lines from history write} Removing undo lines from \verb|)hist )write linelist| <>= (defun |removeUndoLines| (u) + "Remove undo lines from history write" (prog (xtra savedIOindex s s1 m s2 x code c n acc) (declare (special |$currentLine| |$IOindex|)) (return @@ -16173,11 +16273,12 @@ o )show @ -\defun{apropos}{Display all operation names containing the fragment} +\defunsec{apropos}{Display all operation names containing the fragment} Argument l is a list of operation name fragments. This displays all operation names containing these fragments <>= (defun |apropos| (arg) + "Display all operation names containing the fragment" (prog (ops) (return (seq @@ -17250,7 +17351,7 @@ stringimage (defconstant |$PageStuff| 100) @ -\defun{issueHT}{Issue a line of HyperTex} +\defunsec{issueHT}{Issue a line of HyperTex} <>= (defun |issueHT| (line) "Issue a line of HyperTex" @@ -17259,7 +17360,7 @@ stringimage (|sockSendString| |$MenuServer| line)) @ -\defun{endHTPage}{Mark the end of a hyperdoc page} +\defunsec{endHTPage}{Mark the end of a hyperdoc page} <>= (defun |endHTPage| () "Mark the end of a hyperdoc page" @@ -17267,7 +17368,7 @@ stringimage (|sockSendInt| |$MenuServer| |$EndOfPage|)) @ -\defun{testPage}{Generate a Hyperdoc Test Page from Lisp} +\defunsec{testPage}{Generate a Hyperdoc Test Page from Lisp} <>= (defun |testPage| () "Generate a Hyperdoc Test Page from Lisp" @@ -17280,7 +17381,7 @@ stringimage (|endHTPage|)) @ -\defun{replaceNamedHTPage}{Replace a current hypertex page} +\defunsec{replaceNamedHTPage}{Replace a current hypertex page} <>= (defun |replaceNamedHTPage| (window name) "Replace a current hypertex page" @@ -17293,7 +17394,7 @@ stringimage (|sockSendString| |$MenuServer| name)) @ -\defun{startHTPopUpPage}{Start up a form page from spad} +\defunsec{startHTPopUpPage}{Start up a form page from spad} <>= (defun |startHTPopUpPage| (cols) "Start up a form page from spad" @@ -17305,7 +17406,7 @@ stringimage (|sockGetInt| |$MenuServer|)) @ -\defun{startHTPage}{Start a page from spad} +\defunsec{startHTPage}{Start a page from spad} <>= (defun |startHTPage| (cols) "Start a page from spad. Using the spcified number of columns" @@ -17316,7 +17417,7 @@ stringimage (|sockSendInt| |$MenuServer| cols)) @ -\defun{startReplaceHTPage}{Start a replace page sequence} +\defunsec{startReplaceHTPage}{Start a replace page sequence} <>= (defun |startReplaceHTPage| (w) "Start a replace page sequence" @@ -17328,7 +17429,7 @@ stringimage (|sockSendInt| |$MenuServer| w)) @ -\defun{killHTPage}{Kill a hyperdoc page} +\defunsec{killHTPage}{Kill a hyperdoc page} <>= (defun |killHTPage| (w) "Kill a hyperdoc page" @@ -17339,7 +17440,7 @@ stringimage (|sockSendInt| |$MenuServer| w)) @ -\defun{linkToHTPage}{Link to hyperdoc page} +\defunsec{linkToHTPage}{Link to hyperdoc page} <>= (defun |linkToHTPage| (name) "Link to hyperdoc page" @@ -17351,7 +17452,7 @@ stringimage (|sockSendString| |$MenuServer| name)) @ -\defun{popUpNamedHTPage}{Pop up a named hyperdoc page} +\defunsec{popUpNamedHTPage}{Pop up a named hyperdoc page} <>= (defun |popUpNamedHTPage| (name cols) "Pop up a named hyperdoc page" @@ -17365,7 +17466,7 @@ stringimage (|sockGetInt| |$MenuServer|)) @ -\defun{sendHTErrorSignal}{Send hyperdoc an error signal} +\defunsec{sendHTErrorSignal}{Send hyperdoc an error signal} <>= (defun |sendHTErrorSignal| () "Send hyperdoc an error signal" @@ -17496,6 +17597,7 @@ stringimage <> <> <> +<> <> <> <> @@ -17684,9 +17786,9 @@ stringimage <> <> <> -<> -<> -<> +<> +<> +<> <> <> <> diff --git a/changelog b/changelog index fd00320..11f8639 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,8 @@ +20090415 tpd src/axiom-website/patches.html 20090415.01.tpd.patch +20090415 tpd src/input/r20bugs.input fixup bezier +20090415 tpd src/input/cmds.input fixup bezier +20090415 tpd src/interp/vmlisp.lisp move get-current-directory to bookvol5 +20090415 tpd books/bookvol5 add \defunsec, section titles, docstrings 20090414 tpd src/axiom-website/patches.html 20090414.06.tpd.patch 20090414 tpd src/input/unittest3.input add Bezier package 20090414 tpd src/input/unittest2.input add Bezier package diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index ef0541a..322172d 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -1086,5 +1086,7 @@ Makefile add Makefile.slackware chunk
Makefile report regression failures
20090414.06.tpd.patch bookvol10.4 add Bezier package
+20090415.01.tpd.patch +bookvol5 add \defunsec, section titles, docstrings
diff --git a/src/input/cmds.input.pamphlet b/src/input/cmds.input.pamphlet index 29c2766..001cd25 100644 --- a/src/input/cmds.input.pamphlet +++ b/src/input/cmds.input.pamphlet @@ -510,6 +510,7 @@ --S 15 of 23 )what packages +--R --R-------------------------------- Packages --------------------------------- --R AF AlgebraicFunction ALGFACT AlgFactor --R ALGMANIP AlgebraicManipulations ALGMFACT AlgebraicMultFact @@ -519,10 +520,10 @@ --R APPRULE ApplyRules --R ARRAY12 OneDimensionalArrayFunctions2 --R ASSOCEQ AssociatedEquations AXSERV AxiomServer ---R BALFACT BalancedFactorisation BEZOUT BezoutMatrix ---R BOP1 BasicOperatorFunctions1 BOUNDZRO BoundIntegerRoots ---R BRILL BrillhartTests CARTEN2 CartesianTensorFunctions2 ---R CDEN CommonDenominator +--R BALFACT BalancedFactorisation BEZIER Bezier +--R BEZOUT BezoutMatrix BOP1 BasicOperatorFunctions1 +--R BOUNDZRO BoundIntegerRoots BRILL BrillhartTests +--R CARTEN2 CartesianTensorFunctions2 CDEN CommonDenominator --R CHARPOL CharacteristicPolynomialPackage --R CHVAR ChangeOfVariable --R CINTSLPE ComplexIntegerSolveLinearPolynomialEquation diff --git a/src/input/r20bugs.input.pamphlet b/src/input/r20bugs.input.pamphlet index 829d2a5..93b9926 100644 --- a/src/input/r20bugs.input.pamphlet +++ b/src/input/r20bugs.input.pamphlet @@ -197,7 +197,8 @@ positiveRemainder(-1::SINT,-5::SINT) complexRoots([u**2-v+1,v**2-4],[u,v],0.01) --R --R ---R (1) [[1.73046875 %i,- 2.0],[- 1.73046875 %i,- 2.0],[- 1.0,2.0],[1.0,2.0]] +--R (1) +--R [[1.732421875 %i,- 2.0],[- 1.732421875 %i,- 2.0],[- 1.0,2.0],[1.0,2.0]] --R Type: List List Complex Float --E 17 diff --git a/src/interp/vmlisp.lisp.pamphlet b/src/interp/vmlisp.lisp.pamphlet index 215ab70..0b998a3 100644 --- a/src/interp/vmlisp.lisp.pamphlet +++ b/src/interp/vmlisp.lisp.pamphlet @@ -84,18 +84,6 @@ Contributed by Juergen Weiss from Arthur Norman's CCL. (/ 1.0 (tan a)))) @ -\section{The get-current-directory function} -Contributed by Juergen Weiss. -<>= -#+:cmu -(defun get-current-directory () - (namestring (extensions::default-directory))) - -#+(or :akcl :gcl) -(defun get-current-directory () - (namestring (truename ""))) - -@ \section{The digits-by-radix function} The purpose of the following function is to calculate the number of digits in the radix $B$ expansion of an arbitrary Lisp integer $n$. @@ -1991,8 +1979,6 @@ can be restored. (defun MAKE-BVEC (n) (make-array (list n) :element-type 'bit :initial-element 0)) -<> - (in-package 'boot) <>