home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / OL.LZH / DATA.LZH / IHELP.DAT < prev    next >
Text File  |  1991-07-13  |  30KB  |  1,009 lines

  1. Icon Programming Language Version 8 Help Summaries
  2.  
  3.     Help summaries are available for each of the Icon executable
  4.     programs (icont, iconx), and for many aspects of the Icon
  5.     language itself.    
  6.  
  7.     To see the help summaries, enter one of the following commands:
  8.     
  9.     ihelp icont            # Icon translator & linker
  10.     ihelp iconx            # Icon interpreter
  11.  
  12.     ihelp expressions        # summary of expressions & precedence
  13.     ihelp functions        # summary of functions
  14.     ihelp operations        # summary of operations
  15.     ihelp keywords        # list of keywords
  16.     ihelp datatypes        # list of Icon datatypes
  17.     ihelp reserved        # list of reserved words
  18.     ihelp escapes        # list of string escape sequences
  19.     ihelp abbreviations        # abbreviations used in help files
  20.     ihelp <function name>    # information on specific function
  21.     ihelp about            # bibliography and credits for help file
  22.  
  23. -
  24. abs(N) : N                # compute absolute value
  25.  
  26. Produces the absolute value of N.
  27. -
  28. acos(r1) : r2                # compute arc cosine
  29.  
  30. Produces the arc cosine of r1 in the range of 0 to pi for r1 in the
  31. range of -1 to 1.
  32. -
  33. any(c,s,i1,i2) : i3            # locate initial character
  34.  
  35. Succeeds and produces i1 + 1 if s[i1] is in c and i2 > i1, but fails
  36. otherwise.
  37.  
  38. Defaults:
  39. s    &subject
  40. i1    &pos if s defaulted, otherwise 1
  41. i2    0 
  42. -
  43. args(p) : i                # get number of procedure arguments
  44.  
  45. Produces the number of arguments for procedure p.  For built-in
  46. procedures with a variable number of arguments, the value produced is
  47. -1.  For declared procedures with a variable number of arguments, the
  48. value returned is the nagative of the number of formal prameters.
  49. -
  50. bal(c1,c2,c3,s,i1,i2) : i3,i4,...,in    # locate balanced characters
  51.  
  52. Generates the sequence of integer positions in s preceding a character
  53. of c1 in s[i1:i2] that is balanced with respect to the characters of c2
  54. and c3, but fails if there is no such position.
  55.  
  56. Defaults:
  57. c1    &cset
  58. c2    '('
  59. c3    ')'
  60. s    &subject
  61. i1    &pos if s defaulted, otherwise 1
  62. i2    0 
  63. -
  64. callout(x,x1,x2,...,xn) : xm        # call external function
  65.  
  66. Calls the external function specified by x with arguments x1, x2, ...,
  67. xn.  The mechanism for locating the function specified by x is system
  68. dependent.
  69. -
  70. center(s1,i,s2) : s3            # position string at center
  71.  
  72. Produces a string of size i in which s1 is centered, with s2 used for
  73. padding at left and right as necessary.
  74.  
  75. Defaults:
  76. i    1
  77. s2    " " (blank)
  78. -
  79. char(i) : s                # produce character
  80.  
  81. Produces a string of length 1 consisting of the character whose
  82. internal representation is i.
  83. -
  84. close(f) : f                # close file
  85.  
  86. Produces f after closing it unless f was opened with the pipe ("p")
  87. option, in which case the integer exit status of the command is
  88. returned.
  89. -
  90. collect(i1,i2) : n            # perform garbage collection
  91.  
  92. Causes a garbage collectionin region i1, requesting i2 bytes of space
  93. in that region.  It fails if the requested space is not available.  The
  94. regions are identified as follows:
  95.  
  96.     1    Static region
  97.     2    String region
  98.     3    Block region
  99.  
  100. If i1 is 0, a collection is done, but no region is identified and i2
  101. has no effect.  The value of i2 is ignored for the static region.
  102.  
  103. Defaults:
  104. i1    0
  105. i2    0
  106. -
  107. copy(x1) : x2                # copy value
  108.  
  109. Produces a copy of x1 if x1 is a structure; otherwise it produces x1.
  110. -
  111. cos(r1) : r2                # compute cosine
  112.  
  113. Produces the cosine of r1 in radians.
  114. -
  115. cset(x)                    # convert to cset
  116.  
  117. Produces a cset resulting from converting x, but fails if the
  118. conversion is not possible.
  119. -
  120. delete(X,y) : X                # delete element
  121.  
  122. If X is a set, deletes x from X.  If X is a table, deletes the element
  123. for key x from X.  Produces X.
  124. -
  125. detab(s1,i1,i2,...,in) : s2        # remove tabs
  126.  
  127. Produces a string based on s1 in which each tab character is replaced
  128. by one or more blanks.  Tab stops are at i1, i2, ..., in, with
  129. additional stops obtained by repeating the last interval.
  130.  
  131. Default:
  132. i1    9
  133. -
  134. display(i,f) : n            # display variables
  135.  
  136. Writes the image of the current co-expression and the values of the
  137. local variables in the current procedure call.  If i > 0, the local
  138. variables in the i preceding procedure calls are displayed as well.
  139. After all local variables are displayed, the values of global variables
  140. are displayed.  Output is written to f.
  141.  
  142. Defaults:
  143. i    &level
  144. f    &errout
  145. -
  146. dtor(r1) : r2                # convert degrees to radians
  147.  
  148. Produces the radian equivalent of r1 given in degrees.
  149. -
  150. entab(s1,i1,i2,...,in) : s2        # insert tabs
  151.  
  152. Produces a string based on s1 in which runs of blanks are replaced by
  153. tabs.  Tab stops are at i1, i2, ..., in, with additional stops obtained
  154. by repeating the last interval.
  155.  
  156. Default:
  157. i1    9
  158. -
  159. errorclear() : n            # clear error indication
  160.  
  161. Clears the indications of the last error.
  162. -
  163. exit(i)                    # exit program
  164.  
  165. Terminates the program with exit status i.
  166.  
  167. Default:
  168. i    normal exit (system dependent)
  169. -
  170. exp(r1) : r2                # compute exponential
  171.  
  172. Produces e raised to the power r1.
  173. -
  174. find(s1,s2,i1,i2) : i3,i4,...,in    # find string
  175.  
  176. Generates the sequence of integer positions in s2 at which s1 occurs as
  177. a substring in s2[i1:i2], but fails if there is no such position.
  178.  
  179. Defaults:
  180. s2    &subject
  181. i1    &pos if s2 defaulted, otherwise 1
  182. i2    0 
  183. -
  184. get(L) : x                # get value from list
  185.  
  186. Produces the leftmost element of L and removes it from L, but fails if
  187. L is empty; synonym for pop(L).
  188. -
  189. getenv(s1) : s2                # get value of environment variable
  190.  
  191. Produces the value of environment variable s1, but fails if the
  192. variable is not set or environment variables are not supported.
  193. -
  194. iand(i1,i2) : i3            # compute bit-wise "and"
  195.  
  196. Produces the bitwise "and" of i1 and i2.
  197. -
  198. icom(i1) : i2                # compute bit-wise complement
  199.  
  200. Produces the bitwise complement (1's complement) of i1.
  201. -
  202. image(x) : s                # produce string image
  203.  
  204. Produces a string image of x.
  205. -
  206. insert(X,x1,x2) : X            # insert element
  207.  
  208. If X is a table, inserts the key x1 with value x2 into X.  If X is a
  209. set, inserts x1 into X.  Produces X.
  210.  
  211. Default:
  212. x2    &null
  213. -
  214. integer(x) : i                # convert to integer
  215.  
  216. Produces the integer resulting from converting x, but fails if the
  217. conversion is not possible.
  218. -
  219. ior(i1,i2) : i3                # compute bit-wise inclusive "or"
  220.  
  221. Produces the bitwise inclusive "or" of i1 and i2
  222. -
  223. ishift(i1,i2) : i3            # shift bits
  224.  
  225. Produces the result of shifting the bits in i1 by i2 positions.
  226. Positive values of i2 shift to the left, negative to the right.
  227. Vacated bit positions are zero-filled.
  228. -
  229. ixor(i1,i2) : i3            # compute bit-wise exclusive "or"
  230.  
  231. Produces the bitwise exclusive "or" of i1 and i2.
  232. -
  233. key(T) : x1,x2,...,xn            # generate keys from table
  234.  
  235. Generates the keys in table T.
  236. -
  237. left(s1,i,s2) : s3            # position string at left
  238.  
  239. Produces a string of size i in which s1 is positioned at the left, with
  240. s2 used for padding on the right as necessary.
  241.  
  242. Defaults:
  243. i    1
  244. s2    " " (blank)
  245. -
  246. list(i,x) : L                # create list
  247.  
  248. Produces a list of size i in which each value is x.
  249.  
  250. Defaults:
  251. i    0
  252. x    &null
  253. -
  254. log(r1,r2) : r3                # compute logarithm
  255.  
  256. Produces the logarithm of r1 to the base r2.
  257.  
  258. Default:
  259. r2    e
  260. -
  261. many(c,s,i1,i2) : i3            # locate many characters
  262.  
  263. Succeeds and produces the position in s after the longest initial sequence
  264. of characters in c in s[i1:i2].  It fails if s[i1] is not in c.
  265.  
  266. Defaults:
  267. s    &subject
  268. i1    &pos if s defaulted, otherwise 1
  269. i2    0 
  270. -
  271. map(s1,s2,s3) : s4            # map characters
  272.  
  273. Produces a string of size *s1 obtained by mapping characters of s1 that
  274. occur in s2 into corresponding characters in s3.
  275.  
  276. Defaults:
  277. s2    string(&ucase)
  278. s3    string(&lcase)
  279. -
  280. match(s1,s2,i1,i2) : i3            # match initial string
  281.  
  282. Produces i1 + *s1 if s1 == s2[i1+:*s1], but fails otherwise.
  283.  
  284. Defaults:
  285. s2    &subject
  286. i1    &pos if s2 defaulted, otherwise 1
  287. i2    0 
  288. -
  289. member(X,x) : x                # test for membership
  290.  
  291. If X is a set, succeeds if x is a member of X, but fails otherwise.  If
  292. X is a table, succeeds if x is a key of an element in X, but fails
  293. otherwise.  Produces x if it succeeds.
  294. -
  295. mmout(x) : n                # write text to allocation history
  296.  
  297. Writes s to the allocation history file.  s is given no
  298. interpretation.
  299. -
  300. mmpause(s) : n                # write pause to allocation history
  301.  
  302. Writes s to the allocation history file as a pause point with
  303. identification s.
  304.  
  305. Default:
  306. s    "programmed pause"
  307. -
  308. mmshow(x,s) : n                # redraw in allocation history
  309.  
  310. Specifies redrawing of x in the allocation history file.  The color is
  311. defined by s as follows:
  312.  
  313.     "b"    black
  314.     "g"    gray
  315.     "w"    white
  316.     "h"    highlight; blinking black and white if possible
  317.     "r"    normal color
  318.  
  319. If x is not in an allocated region, has no effect.
  320.  
  321. Default:
  322. s    "r"
  323. -
  324. move(i) : s                # move scanning position
  325.  
  326. Produces &subject[&pos:&pos + i] and assigns i + &pos to &pos, but
  327. fails if i is out of range; reverses assignment to &pos if resumed.
  328. -
  329. name(x) : s                # produce name
  330.  
  331. Produces the name of the variable x.  If x is an identifier or a
  332. keyword that is a variable, the name of the identifier or keyword is
  333. produced.  If x is a record field reference, the record name and field
  334. name are produced with a separating period.  If x is a string, the name
  335. of the string and the subscript range are shown.  If x is a subscripted
  336. list or table, the type name followed by the subscripting expression is
  337. produced.
  338. -
  339. numeric(x) : N                # convert to numeric
  340.  
  341. Produces an integer or real number resulting from converting x, but
  342. fails if the conversion is not possible.
  343. -
  344. open(s1,s2) : f                # open file
  345.  
  346. Produces a file resulting from opening s1 according to options in s2,
  347. but fails if the file cannot be opened.  The options are:
  348.  
  349.     "r"    open for reading
  350.     "w"    open for writing
  351.     "a"    open for writing in append mode
  352.     "b"    open for reading and writing
  353.     "c"    create
  354.     "t"    tranlsate line termination sequences to linefeeds
  355.     "p"    pipe to/from a command -- UNIX
  356.  
  357. The default mode is to translate line termination sequences to
  358. linefeeds on input and conversely on output.  The untranlsated mode
  359. should be used when reading and writing binary files.
  360.  
  361. Default:
  362. s2    "rt"
  363. -
  364. ord(s) : i                # produce ordinal
  365.  
  366. Produces an integer (ordinal) between 0 and 255 that is the internal
  367. representation of the single character in s.
  368. -
  369. pop(L) : x                # pop from list
  370.  
  371. Produces the leftmost element of L and removes it from L, but fails if
  372. L is empty; synonym for get(L).
  373. -
  374. pos(i1) : i2                # test scanning position
  375.  
  376. Produces &pos if &pos = i1, but fails otherwise.
  377. -
  378. proc(x,i) : p                # convert to procedure
  379.  
  380. Produces a procedure corresponding to the value of x, but fails if x
  381. does not correspond to a procedure.  If x is the string name of an
  382. operator, i specifies the number of arguments: 1 for unary (prefix), 2
  383. for binary (infix), and 3 for ternary.
  384.  
  385. Default:
  386. i    1
  387. -
  388. pull(L) : x                # pull from list
  389.  
  390. Produces the rightmost element of L and removes it from L, but fails if
  391. L is empty.
  392. -
  393. push(L,x) : L                # push onto list
  394.  
  395. Adds x to the left end of L and produces L.
  396. -
  397. put(L,x) : L                # put onto list
  398.  
  399. Adds x to the right end of L and produces L.
  400. -
  401. read(f) : s                # read line
  402.  
  403. Produces the next line from f, but fails on end of file.
  404.  
  405. Default:
  406. f    &input
  407. -
  408. reads(f,i) : s                # read string
  409.  
  410. Produces a string consisting of the next i characters from f, or the
  411. remaining characters of f if fewer remain, but fails on an end of
  412. file.  In reads(), unlike read(), line termination sequences have no
  413. special significance.  reads() should be used for reading binary data.
  414.  
  415. Defaults:
  416. f    &input
  417. i    1
  418. -
  419. real(x) : r                # convert to real
  420.  
  421. Produces a real number resulting from type conversion of x, but fails
  422. if the conversion is not possible.
  423. -
  424. remove(s) : n                # remove file
  425.  
  426. Removes (deletes) the file named s, but fails if s cannot be removed.
  427. -
  428. rename(s1,s2) : n            # rename file
  429.  
  430. Renames the file named s1 to be s2, but fails if the renaming cannot be
  431. done.
  432. -
  433. repl(s1,i) : s2                # replicate string
  434.  
  435. Produces a string consisting of i concatenations of s1.
  436. -
  437. reverse(s1) : s2            # reverse string
  438.  
  439. Produces a string consisting of the reversal of s.
  440. -
  441. right(s1,i,s2) : s3            # position string at right
  442.  
  443. Produces a string of size i in which s1 is positioned at the right, with
  444. s2 used for padding on the left as necessary.
  445.  
  446. Defaults:
  447. i    1
  448. s2    " " (blank)
  449. -
  450. rtod(r1) : r2                # convert radians to degrees
  451.  
  452. Produces the degree equivalent of r1 given in radians.
  453. -
  454. runerr(i,x)                # terminate with run-time error
  455.  
  456. Terminates program execution with error i and offending value x.
  457.  
  458. Default:
  459. x    no offending value
  460. -
  461. save(s) : i                # save executable image
  462.  
  463. Saves an executable image of the current running program in the file
  464. named s and produces the size of the file, but fails if the file cannot
  465. be created.
  466. -
  467. seek(f,i) : f                # seek to position in file
  468.  
  469. Seeks to position i in f, but fails if the seek cannot be performed.
  470. The first byte in the file is at position 1.  seek(f,0) seeks to the
  471. end of file f.
  472. -
  473. seq(i1,i2) : i3,i4,...            # generate sequence of integers
  474.  
  475. Generates an endless sequence of integers starting at i1 with
  476. increments of i2.
  477.  
  478. Defaults:
  479. i1    1
  480. i2    1
  481. -
  482. set(L) : S                # create set
  483.  
  484. Produces a set whose members are the distinct values in the list L.
  485.  
  486. Default:
  487. L    []
  488. -
  489. sin(r1) : r2                # compute sine
  490.  
  491. Produces the sine of r1 given in radians.
  492. -
  493. sort(X,i) : L                # sort structure
  494.  
  495. Produces a list containing values from X.  If X is a list or a set,
  496. sort(X,i) produces the values of X in sorted order.  If X is a table,
  497. sort(X,i)produces a list obtained by sorting the elements of X,
  498. depending on the value of i.  For Produces a list according to i:
  499.  
  500. i = (1 | 2)     Produces a list of two-element lists of key/value pairs
  501.         from X; ordered by keys for i = 1, by values for i =
  502.         2.
  503. i = (3 | 4)    Produces a list of size 2 * *X with each consecutive
  504.         pair of elements consisting of a key and a value from
  505.         X; ordered by keys for i = 3, by values for i = 4.
  506.  
  507. Default:
  508. i    1
  509. -
  510. sqrt(r1) : r2                # compute square root
  511.  
  512. Produces the square root of r1.
  513. -
  514. stop(x1,x2,...,xn)            # stop execution
  515.  
  516. Terminates program execution with an error status after writing strings
  517. x1,x2,...,xn.  If xi is a file, subsequent output is to xi.  Initial
  518. output is to standard error output.
  519.  
  520. Default:
  521. xi    "" (empty string)
  522. -
  523. string(x) : s                # convert to string
  524.  
  525. Produces a string resulting from converting x, but fails if the
  526. conversion is not possible.
  527. -
  528. system(s) : i                # call system function
  529.  
  530. Calls the C library function "system" to execute s and produces the
  531. resulting integer exit status.
  532. -
  533. tab(i) : s                # set scanning position
  534.  
  535. Produces &subject[&pos:i] and assigns i to &pos, but fails if i is out
  536. of range.  It reverses assignment to &pos if resumed.
  537. -
  538. table(x) : T                # create table
  539.  
  540. Produces a table with a default value x.
  541.  
  542. Default:
  543. x    &null
  544. -
  545. tan(r1) : r2                # compute tangent
  546.  
  547. Produces the tangent of r1 given in radians.
  548. -
  549. trim(s1,c) : s2                # trim string
  550.  
  551. Produces a string consisting of the characters of s1 up to the trailing
  552. characters contained in c.
  553.  
  554. Default:
  555. c    ' ' (blank)
  556. -
  557. type(x) : s                # produce type name
  558.  
  559. Produces a string corresponding to the type of x.
  560. -
  561. upto(c,s,i1,i2) : i3,i4,...,in        # locate characters
  562.  
  563. Generates the sequence of integer positions in s preceding a character
  564. of c in s[i1:i2].  It fails if there is no such position.
  565.  
  566. Defaults:
  567. s    &subject
  568. i1    &pos if s defaulted, otherwise 1
  569. i2    0 
  570. -
  571. variable(s) : x                # produce variable
  572.  
  573. Produces the variable for the identifier or keyword named s, but fails
  574. if there is no such variable.  Local identifiers override global
  575. identifiers.
  576. -
  577. where(f) : i                # produce position in file
  578.  
  579. Produces the current byte position in f.  The first byte in the file is
  580. at position 1.
  581. -
  582. write(x1,x2,...,xn) : xn        # write line
  583.  
  584. Writes strings x1,x2,...,xn with a line termination sequence added at
  585. the end.  If xi is a file, subsequent output is to xi.  Initial output
  586. is to standard output.
  587.  
  588. Default:
  589. xi    "" (empty string)
  590. -
  591. writes(x1,x2,...,xn)            # write string
  592.  
  593. Writes strings x1,x2,...,xn without a line termination sequence added
  594. at the end.  If xi is a file, subsequent output is to xi.  Initial
  595. output is to standard output.
  596.  
  597. Default:
  598. xi    "" (empty string)
  599. -
  600. icont -- Icon translator and linker
  601.  
  602. icont [option...] file...
  603.     -c                # translate only (no link)
  604.     -o file            # name icode file "file"
  605.     -s                # suppress progress messages
  606.     -t                # give &trace initial value of -1
  607.     -u                # issue warnings for undeclared identifiers
  608.     -Stn            # change translator or linker table size
  609.                 # (t is table ID, n is number of storage units)
  610.  
  611.  
  612.     Table IDs and defaults for -S option
  613.     ====================================
  614.     Table ID    Table Name        Default Size
  615.     --------    ----------        ------------
  616.     c    constant table              100
  617.     f    field table              100
  618.     g    global symbol table          200
  619.     i    identifier table          500
  620.     l    local symbol table          100
  621.     n    line number table         1000
  622.     r    record table              100
  623.     s    string space            20000
  624.     t    tree space            15000
  625.     C    code buffer            15000
  626.     F    file names               10
  627.     L    labels                  500
  628.  
  629. See also:
  630.     ihelp iconx
  631. -
  632. iconx -- Icon interpreter
  633.  
  634. The Icon interpreter is normally invoked automatically when the name of
  635. an Icon program is entered as a command, but it can be invoked
  636. explicitly, too.
  637.  
  638. iconx icode_file_name [arguments for Icon program.]
  639.  
  640.  
  641.  
  642.     Shell environment variables recognized by iconx
  643.     ===============================================
  644.     Name    Default     Description
  645.     --------    -------     -----------------------
  646.     TRACE    0        Initial value for &trace.
  647.     NOERRBUF    undefined   If set, &errout is not buffered.
  648.     STRSIZE    65000        Initial size (bytes) of string region
  649.                 (strings).
  650.     BLOCKSIZE    65000        Initial size (bytes) of block region
  651.                 (most objects).
  652.     COEXPSIZE    2000        Size (long words) of co-expression blocks.
  653.     MSTKSIZE    10000        Size (long words) of main interpreter stack.
  654.     STATSIZE    20480        Initial size (bytes) of static region
  655.                 (co-expression blocks).
  656.     STATINCR    1/4 of        Increment used to expand static region.
  657.         STATSIZE
  658.  
  659.  
  660. See also:
  661.     ihelp icont
  662. -
  663. Expressions shown in order of decreasing precedence.  Items in groups
  664. (as separated by empty lines) have equal precedence.
  665.  
  666. High Precedence Expressions
  667.  
  668.     (expr)            # grouping
  669.     {expr1;expr2;...}        # compound
  670.     x(expr1,expr2,...)        # invocation
  671.     x{expr1,expr2,...}        # "
  672.     [expr1,expr2,...]        # list
  673.     expr.f            # field reference
  674.     expr1[expr2]        # subscript
  675.     expr1[expr2:expr3]        # section
  676.     expr1[expr2+:expr3]        # "
  677.     expr1[expr2-:expr3]        # "
  678.  
  679. Prefix Expressions
  680.  
  681.     not    expr            # success/failure reversal
  682.     | expr            # repeated alternation
  683.     ! expr            # element generation
  684.     * expr            # size
  685.     + expr            # numeric value
  686.     - expr            # negative
  687.     . expr            # value (dereference)
  688.     / expr            # null
  689.     \ expr            # non-null
  690.     = expr            # match and tab
  691.     ? expr            # random value
  692.     ~ expr            # cset complement
  693.     @ expr            # activation
  694.     ^ expr            # refresh
  695.  
  696. Infix Expressions
  697.  
  698.     expr1 \ expr2        # limitation
  699.     expr1 @ expr2        # transmission
  700.     expr1 ! expr2        # invocation
  701.  
  702.     expr1 ^ expr2        # power
  703.  
  704.     expr1 * expr2        # product
  705.     expr1 / expr2        # quotient
  706.     expr1 % expr2        # remainder
  707.     expr1 ** expr2        # intersection
  708.  
  709.     expr1 + expr2        # sum
  710.     expr1 - expr2        # numeric difference
  711.  
  712.     expr1 ++ expr2        # union
  713.     expr1 -- expr2        # cset or set difference
  714.  
  715.     expr1 || expr2        # string concatenation
  716.     expr1 ||| expr2        # list concatenation
  717.  
  718.     expr1 < expr2        # numeric comparison
  719.     expr1 <= expr2        # "
  720.     expr1 = expr2        # "
  721.     expr1 >= expr2        # "
  722.     expr1 > expr2        # "
  723.     expr1 ~= expr2        # "
  724.     expr1 << expr2        # string comparison
  725.     expr1 <<= expr2        # "
  726.     expr1 == expr2        # "
  727.     expr1 >>= expr2        # "
  728.     expr1 >> expr2        # "
  729.     expr1 ~== expr2        # "
  730.     expr1 === expr2        # value comparison
  731.     expr1 ~=== expr2        # "
  732.  
  733.     expr1 | expr2        # alternation
  734.  
  735.     expr1 to expr2 by expr3    # integer generation
  736.  
  737.     expr1 := expr2        # assignment
  738.     expr1 <- expr2        # reversible assignment
  739.     expr1 :=: expr2        # exchange
  740.     expr1 <-> expr2        # reversible exchange
  741.     expr1 op:= expr2        # (augmented assignments)
  742.  
  743.     expr1 ? expr2        # string scanning
  744.  
  745.     expr1 & expr2        # conjunction
  746.  
  747. Low Precedence Expressions
  748.  
  749.     break [expr]               # break from loop
  750.     case expr0 of {            # case selection
  751.        expr1:expr2
  752.        ...
  753.        [default:exprn]
  754.        }
  755.     create expr                # co-expression creation
  756.     every expr1 [do expr2]        # iterate over generated values
  757.     fail                # failure of procedure
  758.     if expr1 then exp2 [else exp3]  # if-then-else
  759.     next                # go to top of loop
  760.     repeat expr                # loop
  761.     return expr                # return from procedure
  762.     suspend expr1 [do expr2]        # suspension of procedure
  763.     until expr1 [do expr2]        # until-loop
  764.     while expr1 [do expr2]        # while-loop
  765. -
  766. Functions and datatypes of arguments and produced values:
  767.  
  768. abs(N) : N                # compute absolute value
  769. acos(r1) : r2                # compute arc cosine
  770. any(c,s,i1,i2) : i3            # locate initial character
  771. args(p) : i                # get number of procedure arguments
  772. bal(c1,c2,c3,s,i1,i2) : i3,i4,...,in    # locate balanced characters
  773. callout(x,x1,x2,...,xn) : xm        # call external function
  774. center(s1,i,s2) : s3            # position string at center
  775. char(i) : s                # produce character
  776. close(f) : f                # close file
  777. collect(i1,i2) : n            # perform garbage collection
  778. copy(x1) : x2                # copy value
  779. cos(r1) : r2                # compute cosine
  780. cset(x)                    # convert to cset
  781. delete(X,y) : X                # delete element
  782. detab(s1,i1,i2,...,in) : s2        # remove tabs
  783. display(i,f) : n            # display variables
  784. dtor(r1) : r2                # convert degrees to radians
  785. entab(s1,i1,i2,...,in) : s2        # insert tabs
  786. errorclear() : n            # clear error indication
  787. exit(i)                    # exit program
  788. exp(r1) : r2                # compute exponential
  789. find(s1,s2,i1,i2) : i3,i4,...,in    # find string
  790. get(L) : x                # get value from list
  791. getenv(s1) : s2                # get value of environment variable
  792. iand(i1,i2) : i3            # compute bit-wise "and"
  793. icom(i1) : i2                # compute bit-wise complement
  794. image(x) : s                # produce string image
  795. insert(X,x1,x2) : X            # insert element
  796. integer(x) : i                # convert to integer
  797. ior(i1,i2) : i3                # compute bit-wise inclusive "or"
  798. ishift(i1,i2) : i3            # shift bits
  799. ixor(i1,i2) : i3            # compute bit-wise exclusive "or"
  800. key(T) : x1,x2,...,xn            # generate keys from table
  801. left(s1,i,s2) : s3            # position string at left
  802. list(i,x) : L                # create list
  803. log(r1,r2) : r3                # compute logarithm
  804. many(c,s,i1,i2) : i3            # locate many characters
  805. map(s1,s2,s3) : s4            # map characters
  806. match(s1,s2,i1,i2) : i3            # match initial string
  807. member(X,x) : x                # test for membership
  808. mmout(x) : n                # write text to allocation history
  809. mmpause(s) : n                # write pause to allocation history
  810. mmshow(x,s) : n                # redraw in allocation history
  811. move(i) : s                # move scanning position
  812. name(x) : s                # produce name
  813. numeric(x) : N                # convert to numeric
  814. open(s1,s2) : f                # open file
  815. ord(s) : i                # produce ordinal
  816. pop(L) : x                # pop from list
  817. pos(i1) : i2                # test scanning position
  818. proc(x,i) : p                # convert to procedure
  819. pull(L) : x                # pull from list
  820. push(L,x) : L                # push onto list
  821. put(L,x) : L                # put onto list
  822. read(f) : s                # read line
  823. reads(f,i) : s                # read string
  824. real(x) : r                # convert to real
  825. remove(s) : n                # remove file
  826. rename(s1,s2) : n            # rename file
  827. repl(s1,i) : s2                # replicate string
  828. reverse(s1) : s2            # reverse string
  829. right(s1,i,s2) : s3            # position string at right
  830. rtod(r1) : r2                # convert radians to degrees
  831. runerr(i,x)                # terminate with run-time error
  832. save(s) : i                # save executable image
  833. seek(f,i) : f                # seek to position in file
  834. seq(i1,i2) : i3,i4,...            # generate sequence of integers
  835. set(L) : S                # create set
  836. sin(r1) : r2                # compute sine
  837. sort(X,i) : L                # sort structure
  838. sqrt(r1) : r2                # compute square root
  839. stop(x1,x2,...,xn)            # stop execution
  840. string(x) : s                # convert to string
  841. system(s) : i                # call system function
  842. tab(i) : s                # set scanning position
  843. table(x) : T                # create table
  844. tan(r1) : r2                # compute tangent
  845. trim(s1,c) : s2                # trim string
  846. type(x) : s                # produce type name
  847. upto(c,s,i1,i2) : i3,i4,...,in        # locate characters
  848. variable(s) : x                # produce variable
  849. where(f) : i                # produce position in file
  850. write(x1,x2,...,xn) : xn        # write line
  851. writes(x1,x2,...,xn)            # write string
  852. -
  853. Operations and required datatypes
  854.  
  855. prefix operations
  856.  
  857.     +N : N            # compute positive
  858.     -N : N            # compute negative
  859.     ~c1 : c2            # compute cset complement
  860.     =s1 : s2            # match string in scanning
  861.     @C : x            # activate co-expression
  862.     ^C1 : C2            # create refreshed co-expression
  863.     *x : i            # compute size
  864.     ?x1 : x2            # generate random value
  865.     !x : x1,x2,...,xn        # generate values
  866.     /x : x            # check for null value
  867.     \x : x            # check for non-null value
  868.     .x : x            # dereference variable
  869.  
  870. infix operations
  871.  
  872.     N1 + N2 : N3        # compute sum
  873.     N1 - N2 : N3        # compute difference
  874.     N1 * N2 : N3        # compute product
  875.     N1 / N2 : N3        # compute quotient
  876.     N1 % N2 : N3        # compute remainder
  877.     N1 ^ N2 : N3        # compute exponential
  878.     x1 ++ x2 : x3        # compute cset or set union
  879.     x1 -- x2 : x3        # compute cset or set difference
  880.     x1 ** x2 : x3        # compute cset or set intersection
  881.     s1 || s2 : s3        # concatenate strings
  882.     L1 ||| L2 : L3        # concatenate lists
  883.     R.f : x            # get field of record
  884.     x1 @ C : x2            # transmission value to co-expression
  885.     x1 & x2 : x2        # evaluate in conjunction
  886.     N1 < N2 : N2        # compare numerically
  887.     N1 <= N2 : N2        # "
  888.     N1 = N2 : N2        # "
  889.     N1 >= N2 : N2        # "
  890.     N1 > N2 : N2        # "
  891.     N1 ~= N2 : N2        # "
  892.     s1 << s2 : s2        # compare lexically
  893.     s1 <<= s2 : s2        # "
  894.     s1 == s2 : s2        # "
  895.     s1 >>= s2 : s2        # "
  896.     s1 >> s2 : s2        # "
  897.     s1 ~== s2 : s2        # "
  898.     x1 === x2 : x2        # compare values
  899.     x1 ~=== x2 : x2        # "
  900.     x1 := x2 : x1        # assign value
  901.     x1 op:= x2 : x1        # augmented assignment
  902.     x1 :=: x2 : x1        # exchange values
  903.     x1 <- x2 : x1        # assign value reversibly
  904.     x1 <-> x2 : x1        # exchange values reversibly
  905. -
  906. Keywords
  907.  
  908.     &ascii: c            # cset of ascii characters
  909.     &clock : s            # current time of day
  910.     &collections : i1,i2,i3,i4    # collection count generation
  911.                 # (total,static,string,block)
  912.     &cset : c            # cset of all characters
  913.     ¤t : C        # current co-expression
  914.     &date : s            # current date
  915.     &dateline : s        # current date and time
  916.     &digits : c            # cset of digits 0-9
  917.     &error : i            # run-time error conversion control
  918.     &errornumber : i        # run-time error number
  919.     &errortext : x            # run-time error message text
  920.     &errorvalue            # run-time error offending value
  921.     &errout            # standard error output file
  922.     &fail            # fails
  923.     &features            # implementation features generation
  924.     &file            # current source code file name
  925.     &host            # string identifying host computer
  926.     &input            # standard input file
  927.     &lcase            # cset of lower case letters a-z
  928.     &level            # level of current procedure call
  929.     &line            # current source code line number
  930.     &main            # main co-expression
  931.     &null            # the null value
  932.     &output            # standard output file
  933.     &pos            # string scanning position
  934.     &random            # random number seed
  935.     ®ions            # current region size generation
  936.                 # (static,string,block)
  937.     &source            # activator of current co-expression
  938.     &storage            # spaced used generation
  939.                 # (static,string,block)
  940.     &subject            # string scanning subject
  941.     &time            # current run time in milliseconds
  942.     &trace            # procedure tracing control
  943.     &ucase            # cset of upper case letters A-Z
  944.     &version            # version of Icon
  945. -
  946. Datatypes
  947.  
  948.     null    string        co-expression   table
  949.     integer    cset        procedure        set
  950.     real    file        list        (record types)
  951. -
  952. Reserved words
  953.  
  954.     break    do        global    next        repeat    to
  955.     by        else        if        not        return    until
  956.     case    end        initial    of        static    while
  957.     create    every        link    procedure   suspend
  958.     default    fail        local    record        then
  959. -
  960. Escapes in string and cset constants
  961.  
  962.     \b        backspace            \v    vertical tab
  963.     \d        delete(rubout        \'    single quote
  964.     \e        escape (altmode)        \"    double quote
  965.     \f        formfeed            \\    backslash
  966.     \l        linefeed (newline)        \ddd    octal code
  967.     \n        newline (linefeed)        \xdd    hexadecimal code
  968.     \r        carriage return        \^c    control code
  969.     \t        horizontal tab
  970. -
  971. Abbreviations used in Icon help files (and other Icon literature)
  972.  
  973.     c    cset        C    co-expression
  974.     f    file        L    list
  975.     i    integer        N    numeric (i or f)
  976.     n    null        R    record (any record type)
  977.     p    procedure    S    set
  978.     r    real        T    table
  979.     s    string        X    any structure type (L, R, S, or T)
  980.     x    any type
  981. -
  982. About the Icon Programming Language Help File
  983.  
  984. Information used in this help file was obtained from the following
  985. sources:
  986.  
  987. Griswold, Ralph E. and Madge T. Griswold.  "The Icon Programming
  988. Language, Second Edition", Prentice-Hall, Inc., Englewood Cliffs, New
  989. Jersey.  1990.
  990.  
  991. Griswold, Ralph E.  ICONT(1), manual page for "UNIX Programmer's
  992. Manual", Department of Computer Science, The University of Arizona.
  993. 1988.
  994.  
  995. Further information on the Icon Programming Language can be obtained
  996. from:
  997.  
  998.     Icon Project
  999.     Department of Computer Science
  1000.     Gould-Simpson Building
  1001.     The University of Arizona
  1002.     Tucson, Arizona  85721
  1003.     U.S.A.
  1004.     (602) 621-2018
  1005.     icon-project@cs.arizona.edu            (Internet)
  1006.     ...{uunet,allegra,noao}!arizona!icon-project    (uucpnet)
  1007.  
  1008. August 3, 1990.
  1009.