|
|
1.1 ! root 1: .\" Copyright (c) 1980 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)manCh4.rno 6.1 (Berkeley) 4/29/86 ! 6: .\" ! 7: .NS 1 "System Commands" ! 8: .pp ! 9: System commands start with a right parenthesis and they are followed ! 10: by the command-name and possibly one or more arguments. All this information ! 11: \fImust be typed on a single line\fP, and any number of spaces or tabs ! 12: may be used to separate the components. ! 13: .sp 4p ! 14: .NS 2 "Load" ! 15: .pp ! 16: Redirect the standard input to the file named by the command's ! 17: argument. ! 18: If the file doesn't exist then FP appends '.fp' to the file-name and retries ! 19: the open (error if the file doesn't exist). ! 20: This command allows the user to read in FP function definitions ! 21: from a file. ! 22: The user can also read in applications, but such operation is ! 23: of little utility since none of the input is echoed at the terminal. ! 24: Normally, FP returns control to the user on an end-of-file. ! 25: It will also do so whenever it does a \s-2FRANZ\s+2 reset, e.g., ! 26: whenever the user issues a break, or whenever the system encounters ! 27: a non-terminating application. ! 28: .sp 4p ! 29: .NS 2 "Save" ! 30: .pp ! 31: Output the source text for all user-defined functions to the file named ! 32: by the argument. ! 33: .sp ! 34: .NS 2 "Csave and Fsave" ! 35: .pp ! 36: These commands output the lisp code for all the user-defined ! 37: functions, including the original source-code, to the file named ! 38: by the argument. Csave pretty prints the code, ! 39: Fsave does not. Unless the user wishes to examine ! 40: the code, he should use 'fsave'; it is about ! 41: ten times faster than 'csave', and the resulting file ! 42: will be about three times smaller. ! 43: .pp ! 44: These commands are intended to be used with the liszt compiler and ! 45: the 'cload' command, as explained below. ! 46: .sp ! 47: .NS 2 "Cload" ! 48: .pp ! 49: This command loads or fasls in the file shown by the argument. ! 50: First, FP appends a '.o' to the file-name, and attempts a ! 51: load. Failing that, it tries to load the file named by ! 52: the argument. If the user outputs his function definitions ! 53: using fsave or csave, and then compiles them using liszt, ! 54: then he may fasl in the compiled code and speed up the execution of ! 55: his defined functions by a factor of 5 to 10. ! 56: .sp ! 57: .NS 2 "Pfn" ! 58: .pp ! 59: Print the source text(s) (at the terminal) for the ! 60: user-defined function(s) named by the argument(s) (error if the function ! 61: doesn't exist). ! 62: .sp ! 63: .NS 2 "Delete" ! 64: .pp ! 65: Delete the user-defined function(s) ! 66: named by the argument (error if the function doesn't exist). ! 67: .sp ! 68: .NS 2 "Fns" ! 69: .pp ! 70: List the names of all user-defined functions in alphabetical order. ! 71: Traced functions are labeled by a trailing '@' ! 72: (see \(sc 4.7 for sample output). ! 73: .sp ! 74: .NS 2 "Stats" ! 75: .pp ! 76: The \*(lqstats\*(rq command has several options ! 77: that help the user manage the collection of ! 78: dynamic statistics for ! 79: functions\** ! 80: .(f ! 81: \** Measurement of user-defined functions is done with ! 82: the aid of the trace package, discussed in \(sc 4.9. ! 83: .)f ! 84: and functional forms. ! 85: Option names follow the keyword \*(lqstats\*(rq, ! 86: e.g., \*(lq)stats reset\*(rq. ! 87: .pp ! 88: The statistic package records the frequency of usage for each function and ! 89: functional form; also the size\** ! 90: .(f ! 91: \** \*(lqSize\*(rq is the top-level length of the argument, ! 92: for most functions. Exceptions are: \fIapndl, distl\fP (top-level length ! 93: of the second element), \fIapndr, distr\fP (top-level length of the first ! 94: element), and \fItranspose\fP (top level length of each top level ! 95: element). ! 96: .)f ! 97: of all the arguments ! 98: for all functions and functional expressions. ! 99: These two measures allow the ! 100: user to derive the average argument size per call. ! 101: For functional ! 102: forms the package tallies the frequency of each functional argument. ! 103: Construction has an additional statistic that tells the number of ! 104: functional arguments involved in the construction. ! 105: .pp ! 106: Statistics are gathered whenever the mode is on, except for ! 107: applications ! 108: that \*(lqbottom out\*(rq (\*(IE return bottom \- ?). ! 109: Statistic collection ! 110: slows the system down by $times 2~$ to $~times 4$. ! 111: The following ! 112: printout illustrates the use of the statistic package (user input ! 113: is emboldened): ! 114: .(b ! 115: .sp ! 116: .hl ! 117: .sp ! 118: .nf ! 119: \fB)stats on\fP ! 120: ! 121: Stats collection turned on. ! 122: ! 123: \fB+:<3 4>\fP ! 124: 7 ! 125: \fB!* @ iota :3\fP ! 126: 6 ! 127: \fB)stats print\fP ! 128: ! 129: plus: times 1 ! 130: ! 131: times: times 2 ! 132: ! 133: iota: times 1 ! 134: ! 135: insert: times 1 size 3 ! 136: ! 137: Functional Args ! 138: Name Times ! 139: times 1 ! 140: ! 141: ! 142: compos: times 1 size 1 ! 143: ! 144: Functional Args ! 145: Name Times ! 146: insert 1 ! 147: iota 1 ! 148: .fi ! 149: .sp 4p ! 150: .hl ! 151: .sp 4p ! 152: .)b ! 153: .NS 3 "On" ! 154: .pp ! 155: Enable statistics collection. ! 156: .sp 4p ! 157: .NS 3 "Off" ! 158: .pp ! 159: Disable statistics collection. The user may ! 160: selectively collect statistics ! 161: using the on and off commands. ! 162: .sp 4p ! 163: .NS 3 "Print" ! 164: .pp ! 165: Print the dynamic statistics at the terminal, or, output them to ! 166: a file. The latter option requires an additional argument, ! 167: \*(EG \*(lq)stats print fooBar\*(rq prints ! 168: the stats to the file \*(lqfooBar\*(rq. ! 169: .sp 4p ! 170: .NS 3 "Reset" ! 171: .pp ! 172: Reset the dynamic statistics counters. ! 173: To prevent accidental loss of collected statistics, the system ! 174: will query the user if he tries to reset the counters without first ! 175: outputting the data (the system will also query the user if he tries ! 176: to log out without outputting the data). ! 177: .sp 4p ! 178: .NS 2 "Trace" ! 179: .pp ! 180: Enable or disable ! 181: the tracing and the dynamic measurement of the user ! 182: defined functions named by the argument(s). ! 183: The first argument tells whether to turn tracing off or on and ! 184: the others give the name of the functions affected. ! 185: The tracing and untracing commands are independent of the dynamic statistics ! 186: commands. ! 187: This command is cumulative \*(EG ! 188: \&')trace\ on\ f1', followed by ')trace\ on\ f2' is equivalent ! 189: to ')trace\ on\ f1\ f2'. ! 190: .pp ! 191: FP tracer output is similar to the \s-2FRANZ\s+2 tracer output: function ! 192: entries and exits, call level, the functional argument ! 193: (remember that FP functions ! 194: have only one argument!), and the result, are printed at the terminal: ! 195: .(b ! 196: .sp ! 197: .hl ! 198: .sp 4p ! 199: .nf ! 200: )pfn fact ! 201: ! 202: {fact\ (eq0\ ->\ %1\ ;\ *\ @\ [id,\ fact\ @\ s1])} ! 203: )fns ! 204: ! 205: eq0 fact s1 ! 206: ! 207: )trace on fact ! 208: )fns ! 209: ! 210: eq0 fact@ s1 ! 211: ! 212: fact : 2 ! 213: ! 214: 1 >Enter> fact [2] ! 215: |2 >Enter> fact [1] ! 216: | 3 >Enter> fact [0] ! 217: | 3 <EXIT<\ \ fact\ \ 1 ! 218: |2 <EXIT<\ \ fact\ \ 1 ! 219: 1 <EXIT<\ \ fact\ \ 2 ! 220: ! 221: 2 ! 222: .fi ! 223: .sp 4p ! 224: .hl ! 225: .sp 4p ! 226: .)b ! 227: .NS 2 "Timer" ! 228: .pp ! 229: FP provides a simple timing facility to time top-level applications. ! 230: The command \*(lq)timer on\*(rq puts the system in timing mode, ! 231: \*(lq)timer off\*(rq turns the mode off (the mode is initially off). ! 232: While in timing mode, the system reports ! 233: CPU time, garbage collection time, and elapsed time, ! 234: in seconds. The timing output follows the printout of the result of ! 235: the application. ! 236: .NS 2 "Script" ! 237: .pp ! 238: Open or close a script file. ! 239: The first argument gives the option, the second the optional script file-name. ! 240: The \*(lqopen\*(rq option causes a new script-file to be opened and any ! 241: currently open script file to be closed. ! 242: If the file ! 243: cannot be opened, FP sends and error message and, if a ! 244: script file was already opened, it remains open. ! 245: The command \*(rq)script close\*(rq closes an open script file. ! 246: The user may elect to append script output to the script-file ! 247: with the append mode. ! 248: .NS 2 "Help" ! 249: .pp ! 250: Print a short summary of all the system commands: ! 251: .(b ! 252: .sp ! 253: .TS ! 254: center; ! 255: l l. ! 256: \ \ \ \ \ \ )help \& ! 257: Commands are: \& ! 258: \& \& ! 259: .T& ! 260: l12 l. ! 261: load <file> Redirect input from <file> ! 262: save <file> Save defined fns in <file> ! 263: pfn <fn1> ... Print source text of <fn1> ... ! 264: delete <fn1> ... Delete <fn1> ... ! 265: fns List all functions ! 266: stats on/off/reset/print [file] Collect and print dynamic stats ! 267: trace on/off <fn1> ... Start/Stop exec trace of <fn1> ... ! 268: timer on/of Turn timer on/off ! 269: script open/close/append Open or close a script-file ! 270: lisp Exit to the lisp system (return with '^D') ! 271: debug on/off Turn debugger output on/off ! 272: csave <file> Output Lisp code for all user-defined fns ! 273: cload <file> Load Lisp code from a file (may be compiled) ! 274: fsave <file> Same as csave except without pretty-printing ! 275: .TE ! 276: .sp ! 277: .)b ! 278: .NS 2 "Special System Functions" ! 279: .pp ! 280: There are two system functions that ! 281: are not generally meant to be used by average users. ! 282: .NS 3 "Lisp" ! 283: .pp ! 284: This exits to the lisp system. ! 285: Use "^D" to return to FP. ! 286: .NS 3 "Debug" ! 287: .pp ! 288: Turns the 'debug' flag on or off. The command \*(lq)debug on\*(rq ! 289: turns the flag on, \*(lq)debug off\*(rq turns the flag off. ! 290: The main purpose of the command is to print out the parse tree. ! 291: .bp ! 292: .sx 1
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.