Annotation of 43BSDReno/share/doc/ps2/07.fp/manApp.rno, revision 1.1

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: .\"    @(#)manApp.rno  6.2 (Berkeley) 5/10/86
        !             6: .\"
        !             7: .sx 0
        !             8: .AP "Appendix A: Local Modifications"
        !             9: .NS 1 "Character Set Changes"
        !            10: .sp
        !            11: .pp
        !            12: Backus [Ba78] used some
        !            13: characters that do not appear on our
        !            14: ASCII terminals, so  we have made the following substitutions:
        !            15: .sp 2
        !            16: .TS
        !            17: center box;
        !            18: l|c|c.
        !            19: \fBconstant\fP  $x bar$        %\fIx\fP
        !            20: \fBinsert\fP   \(sl    !
        !            21: \fBapply-to-all\fP     \(*a    &
        !            22: \fBcomposition\fP      \*(cm   @
        !            23: \fBarrow\fP    $->$    ->
        !            24: \fBempty set\fP        \(*f    <>
        !            25: \fBbottom\fP   \*(bt   ?
        !            26: \fBdivide\fP   \(di    \(sl
        !            27: \fBmultiply\fP \(mu    \(**
        !            28: .TE
        !            29: .sp
        !            30: .NS 1 "Syntactic Modifications"
        !            31: .NS 2 "While and Conditional"
        !            32: .pp
        !            33: \fBWhile\fP and conditional functional expressions
        !            34: \fImust\fP be enclosed in parenthesis, \*(EG
        !            35: .sp
        !            36: .(c
        !            37: (\fBwhile\fP \fIf g\fP)
        !            38: .sp
        !            39: (\fIp\fP \fB->\fP \fIf\fP \fB;\fP \fIg\fP)
        !            40: .)c
        !            41: .sp
        !            42: .NS 2 "Function Definitions"
        !            43: .pp
        !            44: Function definitions are 
        !            45: enclosed by curly braces; they
        !            46: consist of a name-definition pair,
        !            47: separated by blanks.  For example:
        !            48: .sp
        !            49: .ce 1
        !            50: .b "{fact$~$ !\(** @ iota}"
        !            51: .sp
        !            52: defines the function \fBfact\fP (the reader should recognize this as the
        !            53: non-recursive factorial function).
        !            54: .sp
        !            55: .NS 2 "Sequence Construction"
        !            56: .pp
        !            57: It is not necessary to  separate elements of a sequences with
        !            58: a comma; a blank will suffice:
        !            59: .sp
        !            60: .nf
        !            61: .ce 1
        !            62: <1,2,3> $==$ <1 2 3>
        !            63: .sp
        !            64: .fi
        !            65: .pp
        !            66: For nested sequences, the terminating right angle bracket
        !            67: acts as the delimiter:
        !            68: .sp
        !            69: .nf
        !            70: .ce 1
        !            71: <<1,2,3>,<4,5,6>> $==$ <<1 2 3><4 5 6>>
        !            72: .sp
        !            73: .fi
        !            74: .sp 2
        !            75: .NS 1 "User Interface"
        !            76: .sp
        !            77: .pp
        !            78: We have provided a rich set of commands that allow the user to
        !            79: catalog, print, and
        !            80: delete functions, to load them from a file and to save them away.
        !            81: The user may generate script files, dynamically trace and
        !            82: measure functional expression execution, generate debugging output,
        !            83: and, temporarily exit to the \s-2FRANZ LISP\s+2 system.
        !            84: A command must begin with a right parenthesis.  
        !            85: Consult Appendix C for a complete description of the command syntax.
        !            86: .pp
        !            87: Debugging in FP is difficult;
        !            88: all undefined results map to a single
        !            89: atom \- \fIbottom\fP (\*(lq?\*(rq).
        !            90: To pinpoint the cause of an error the user can use
        !            91: the special debugging output function, \fBout\fP, or the tracer.
        !            92: .sp
        !            93: .NS 1 "Additions and Ommissions"
        !            94: .sp
        !            95: .pp
        !            96: Many relational functions have been added: $<,~~>,~~=,~~ \(!=, ~~<=,~~>=$;
        !            97: their
        !            98: syntax is: <, >, =, ~=, <=, >=.
        !            99: Also added are the \fBiota\fP function (This is the \s-2APL\s+2
        !           100: iota function
        !           101: an n-element sequence
        !           102: of natural numbers) and the exclusive OR (\z\(ci\(pl) function.
        !           103: .pp
        !           104: Several new structural functions have been added:  \fBpair\fP
        !           105: pairs up successive elements of a sequence, \fBsplit\fP splits
        !           106: a sequence into two (roughly) equal halves, \fBlast\fP returns
        !           107: the last element of the sequence (<> if the sequence is empty),
        !           108: \fBfirst\fP returns the first element of the sequence
        !           109: (<> if it is empty), and \fBconcat\fP
        !           110: concatenates all subsequences of a sequence, squeezing out null sequences (<>).
        !           111: \fBFront\fP is equivalent to \fBtlr\fP.
        !           112: \fBPick\fP is a parameterized form of
        !           113: the selector function; the first component of the argument selects
        !           114: a single element from the second component.
        !           115: \fBOut\fP is the only side-effect function; it is equivalent
        !           116: to the \fBid\fP function but it also prints its argument out at the
        !           117: terminal.  This function is intended to be used only for debugging.
        !           118: .pp
        !           119: One new functional form has been added, tree insert.  This
        !           120: functional form breaks up the the argument into two roughly equal pieces
        !           121: applying itself
        !           122: recursively to the two halves.  The functional parameter is applied to the
        !           123: result.
        !           124: .pp
        !           125: The binary-to-unary functions ('\fBbu\fP') has been omitted.
        !           126: .pp
        !           127: Seven mathematical library functions have been added: sin, cos, asin
        !           128: ($sin sup {-1}$), acos ($cos sup {-1}$), log, exp, and mod (the
        !           129: remainder function)
        !           130: .bp
        !           131: .sx
        !           132: .nf
        !           133: .nr ii 18
        !           134: .AP "Appendix B: FP Grammar"
        !           135: \fII. BNF Syntax\fP
        !           136: .sp
        !           137: .ip "fpInput $->$"
        !           138: (fnDef | application | fpCmd\*(sa)\(**  | '^D'
        !           139: .ip "fnDef $->$"
        !           140: \&'{' name funForm '}'
        !           141: .ip "application $->$"
        !           142: funForm ':' object
        !           143: .ip "name $->$"
        !           144: letter (letter | digit | '_')\(**
        !           145: .ip "nameList $->$"
        !           146: (name)\(**
        !           147: .ip "object $->$"
        !           148: atom | fpSequence | '?'
        !           149: .ip "fpSequence $->$"
        !           150: \&'<' (\(*e | object ((',' | ' ') object)\(**) '>'
        !           151: .ip "atom $->$"
        !           152: \&'T' | 'F' | '<>' | '"' (ascii-char)\(** '"' | (letter | digit)\(** | number
        !           153: .ip "funForm $->$"
        !           154: simpFn | composition | construction | conditional |
        !           155: .br
        !           156: constantFn | insertion | alpha | while | '(' funForm ')'
        !           157: .ip "simpFn $->$"
        !           158: fpDefined | fpBuiltin
        !           159: .ip "fpDefined $->$"
        !           160: name
        !           161: .ip "fpBuiltin $->$"
        !           162: selectFn | 'tl' | 'id' | 'atom' | 'not' | 'eq' | relFn | 'null' | 'reverse' |
        !           163: .br
        !           164: \&'distl' | 'distr' | 'length' | binaryFn | 'trans' | 'apndl' | 'apndr' |
        !           165: .br
        !           166: \&'tlr' | 'rotl' | 'rotr' | 'iota' | 'pair' | 'split' | 'concat' | 'last' | 'libFn'
        !           167: .ip "selectFn $->$"
        !           168: (\(*e | '+' | '-') unsignedInteger
        !           169: .ip "relFn $->$"
        !           170: \&'<=' | '<' | '=' | '~=' | '>' | '>='
        !           171: .ip "binaryFn $->$"
        !           172: \&'+' | '-' | '\(**' | '/' | 'or' | 'and' | 'xor'
        !           173: .ip "libFn $->$"
        !           174: \&'sin' | 'cos' | 'asin' | 'acos' | 'log' | 'exp' | 'mod'
        !           175: .ip "composition $->$"
        !           176: funForm '@' funForm
        !           177: .ip "construction $->$"
        !           178: \&'[' formList ']'
        !           179: .ip "formList $->$"
        !           180: \(*e | funForm (',' funForm)\(**
        !           181: .ip "conditional $->$"
        !           182: \&'(' funForm '->' funForm ';' funForm ')'
        !           183: .ip "constantFn $->$"
        !           184: \&'%' object
        !           185: .ip "insertion $->$"
        !           186: \&'!' funForm | '\fB|\fP' funForm
        !           187: .ip "alpha $->$"
        !           188: \&'&' funForm
        !           189: .ip "while $->$"
        !           190: \&'(' 'while' funForm funForm  ')'
        !           191: .sp
        !           192: .lp
        !           193: .nf
        !           194: \fIII. Precedences\fP
        !           195: .sp
        !           196: 1.     %, !, &                 (highest)
        !           197: 2.     @
        !           198: 3.     [$...$]
        !           199: 4.     -> $...$ ; $...$
        !           200: 5.     while                   (least)
        !           201: .(q
        !           202: .sp 2
        !           203: \*(sa Command Syntax is listed in Appendix C.
        !           204: .)q
        !           205: .fi
        !           206: .AP "Appendix C: Command Syntax"
        !           207: .pp
        !           208: All commands begin with a right parenthesis (\*(lq)\*(rq).
        !           209: .sp 2
        !           210: .nf
        !           211: )fns
        !           212: )pfn <nameList>
        !           213: )load <UNIX file name>
        !           214: )cload <UNIX file name>
        !           215: )save <UNIX file name>
        !           216: )csave <UNIX file name>
        !           217: )fsave <UNIX file name>
        !           218: )delete <nameList>
        !           219: )stats on
        !           220: )stats off
        !           221: )stats reset
        !           222: )stats print [UNIX file name]
        !           223: )trace on  <nameList>
        !           224: )trace off <nameList>
        !           225: )timer on
        !           226: )timer off
        !           227: )debug on
        !           228: )debug off
        !           229: )script open <UNIX file name>
        !           230: )script close
        !           231: )script append <UNIX file name>
        !           232: )help
        !           233: )lisp
        !           234: .EQ
        !           235: delim `'
        !           236: .EN
        !           237: .AP "Appendix D: Token-Name Correspondences"
        !           238: .TS
        !           239: center box;
        !           240: c|c
        !           241: c|l.
        !           242: Token  Name
        !           243: =
        !           244: \&[    lbrack$$
        !           245: \&]    rbrack$$
        !           246: \&{    lbrace$$
        !           247: \&}    rbrace$$
        !           248: \&(    lparen$$
        !           249: \&)    rparen$$
        !           250: \&@    compos$$
        !           251: \&!    insert$$
        !           252: \&\fB|\fP      ti$$
        !           253: \&&    alpha$$
        !           254: \&;    semi$$
        !           255: \&:    colon$$
        !           256: \&,    comma$$
        !           257: \&+    builtin$$
        !           258: \&+ `mu sup a' select$$
        !           259: \&\(** builtin$$
        !           260: \&/    builtin$$
        !           261: \&=    builtin$$
        !           262: \&-    builtin$$
        !           263: \&->   arrow$$
        !           264: \&- `mu'       select$$
        !           265: \&>    builtin$$
        !           266: \&>=   builtin$$
        !           267: \&<    builtin$$
        !           268: \&<=   builtin$$
        !           269: \&~=   builtin$$
        !           270: \&%`omicron sup b'     constant$$
        !           271: .TE
        !           272: .sp 2
        !           273: .(q
        !           274: \*(sa \(*m is an optionally signed integer constant.
        !           275: .sp
        !           276: \*(sb \(*o is any FP object.
        !           277: .)q
        !           278: .AP "Appendix E: Symbolic Primitive Function Names"
        !           279: .pp
        !           280: The scanner assigns names to the alphabetic primitive functions by
        !           281: appending the string \*(lq$fp\*(rq to the end of the function name.
        !           282: The following table designates the
        !           283: naming assignments to the non-alphabetic primitive function names.
        !           284: .sp
        !           285: .TS
        !           286: center box;
        !           287: c|c
        !           288: c|l.
        !           289: Function       Name
        !           290: =
        !           291: \&+    plus$fp
        !           292: \&-    minus$fp
        !           293: \&\(** times$fp
        !           294: \&/    div$fp
        !           295: \&=    eq$fp
        !           296: \&>    gt$fp
        !           297: \&>=   ge$fp
        !           298: \&<    lt$fp
        !           299: \&<=   le$fp
        !           300: \&~=   ne$fp
        !           301: .TE
        !           302: .\" want Table of Contents to begin on page 2
        !           303: .pn 2
        !           304: .TC

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.