The Icon Program Library; Version 9.3

Ralph E. Griswold and Gregg M. Townsend

        Department of Computer Science
        The University of Arizona
        Tucson, Arizona

        IPD279
        November 24, 1996
        http://www.cs.arizona.edu/icon/docs/ipd279.html

----------------------------------------------------------------------------
Note: This is the complete description with a contents listing. An
abbreviated version without the contents listing is given in IPD282.

----------------------------------------------------------------------------

1. Introduction

The Icon program library consists of Icon programs, procedures,
documentation, and data. Version 9.3 of Icon is required for some parts of
the library of the library [1,2].

Additional documentation about the Icon program library is available on the
World Wide Web:

     http://www.cs.arizona.edu/icon/

Look in the Program Library section.

2. Library Reorganization

With this release of the Icon program library, we are continuing the
reorganization of library procedures into modules by topic. If you have been
using an earlier version of the Icon program library, you may need to make
some changes to link declarations in your programs. If you get error
messages because of missing files, check the following modules to locate the
procedures you need:

     convert    type conversion and formatting procedures
     datetime   date and time procedures
     factors    procedures related to factoring and prime numbers
     io         procedures related to input and output
     lists      list manipulation procedures
     math       procedures for mathematical computation
     numbers    procedures for numerical computation and formatting
     random     procedures related to random numbers
     scan       scanning procedures
     sets       set manipulation procedures
     sort       sorting procedures
     strings    string manipulation procedures
     tables     table manipulation procedures

3. Unloading the Library

Note: The complete library, when unloaded, requires about 8.5MB of disk
space. In particular, some documents in PostScript form are quite large. If
your disk space is limited, take this into consideration before starting to
unload.

The library is designed to be unloaded in a hierarchy that contains separate
directories for different kinds of material. Material that requires graphics
[2] is in separate directories whose names begin with g. If Icon doesn't
support graphics on your platform, you can ignore these directories.

The directory structure for this version of the library is

      |--data                    data
      |
      |--docs                    documentation
      |
      |--incl                    include files
      |
      |--packs                   packages
      |
      |--procs                   procedures
      |
      |--progs                   programs
ipl---|
      |--gdata                   as above, but for graphics
      |
      |--gdocs
      |
      |--gincl
      |
      |--gpacks
      |
      |--gprocs
      |
      |--gprogs
      |
      |--cfuncs                  loadable C functions

The packages contain material that is too complex fit into other parts of
the hierarchy or that does not conform to the library structure.

The loadable C functions are for platforms on which Icon supports the
built-in function loadfunc(). See the README in that directory for more
information.

The library files are packaged in different ways for different platforms.
See the installation instructions for your platform.

4. Link and Include Search Paths

Many library programs link procedures. For example, options() is used by
many programs for processing command-line options and is linked from "ucode"
files obtained from translating options.icn.

Icon searches for ucode files first in the current directory and then in
directories specified by the IPATH environment variable. IPATH consists of a
sequence of blank-separated path names. The search is in the order of the
names. For example, on a UNIX system running csh,

     setenv IPATH "../procs /usr/icon/ilib"

results in a search for file names in link declarations first in the current
directory, then in ../procs, and finally in /usr/icon/ilib.

Files included by the preprocessor directive $include are searched for on
LPATH. It has the same form as IPATH.

The method of setting IPATH and LPATH varies from system to system.

Since the current directory always is searched first, IPATH and LPATH need
not be set if ucode and include files are placed in the same directory as
the program files. See the next section.

5. Installing the Library

Installing the Icon program library consists of two steps: (1) translating
the procedure files to produce ucode files and (2) translating and linking
the programs.

Ucode files are produced by translating the procedure files with the -c
option to icont, as in

     icont -c options

which translates options.icn. The result is two ucode files named options.u1
and options.u2. The .u1 file contains the procedure's code and the .u2 file
contains global information about the procedure. It is these files that a
link declaration such as

     link options

needs.

Scripts for translating the procedure files are provided with the
distribution. Once the procedure files have been translated, the ucode files
can be moved to any place that is accessible from IPATH.

The programs are translated and linked using icont without the -c option, as
in

     icont deal

which translates and links deal.icn, a program that produces randomly
selected bridge hands.

The result of translating and linking a program is an "icode" file. On some
platforms, the name of the icode file is the same as the name of the program
file with the .icn suffix removed (for example, deal). On other platforms,
the icode file name has the suffix .exe in place of .icn (for example,
deal.exe). Scripts for translating and linking the programs are provided
with distributions for individual platforms. Instructions for building the
programs contained in separate packages are included with those packages.

Some platforms (UNIX and MS-DOS, for example) support the direct execution
of icode files. On such systems, an icode file can be run just by entering
its name on the command line, as in

     deal

On other systems, it is necessary to run iconx with the icode file as an
argument, as in

     iconx deal

(This also works on systems that support direct execution.) Note that the
suffix (if any) need not be mentioned.

Many library programs take arguments and options from the command line.
Options are identified by dashes. For example, in

     deal -h 10

the -h 10 instructs deal to produce 10 hands.

Icode files can be moved to any location accessible from your PATH. Ucode
and include files are needed only during linking. They need not be
accessible when icode files are run.

6. Usage Notes

It is important to read the documentation at the beginning of programs and
procedures in the library. It includes information about special
requirements, limitations, known bugs, and so forth.

Some of the programs in the Icon program library are quite large and may
require more memory than is available on some platforms.

7. Disclaimer

The material in the Icon program library is contributed by users. It is in
the public domain and can be freely copied, although author information
should be left intact and any modifications should be properly attributed.
Neither the Icon Project nor the authors of material in the Icon program
library assume any responsibility as to its correctness or its suitability
for any purpose. The responsibility for use of the Icon program library lies
entirely with the user.

8. Contents

8.1 Programs -- progs

     adlcheck      check for bad address list data
     adlcount      count address list entries
     adlfiltr      filter address list entries
     adlfirst      write first line of addresses
     adllist       list address list fields
     adlsort       sort address list entries
     animal        play "animal" guessing game
     applyfnc      apply function to lines of a file
     banner        display banner
     based         do BASIC-style editing
     bj            play blackjack game
     blnk2tab      convert strings of 2 or more blanks to tabs
     c2icn         assist C-to-Icon porting
     calc          simulate desk calculator
     callcnt       count calls
     chkhtml       check HTML files
     cmpsum        tabulate comparisons
     cnvsum        tabulate type-conversion activity
     colm          arrange data into columns
     comfiles      list common files in two directories
     concord       produce concordance
     conman        convert units
     countlst      count items in a list
     cross         display intersection of words
     crypt         encrypt file
     csgen         generate context-sensitive sentences
     cstrings      print strings in C files
     cvtsum        count conversion event tuples
     cwd           write current working directory
     daystil       calculate the number of days until a given date
     deal          deal bridge hands
     declchck      detect possible declaration errors
     delam         delaminate file
     delamc        delaminate file using tab characters
     delta         first difference of sequence
     detex         strip LaTeX commands
     diffn         show differences among files
     diffsort      reorder "diff" output
     diffsum       count lines affected by a diff
     diffu         show differences in files
     diffword      list different words
     digcol        produce nth column of digit data
     diskpack      produce packing list for diskettes
     duplfile      find directories with same files
     duplproc      find duplicate declarations
     edscript      produce script for ed(1)
     empg          make expression-evaluation programs
     envelope      address envelopes
     evaluate      evaluate Icon expressions
     events        show events
     evstream      show events
     evsum         tabulate event codes
     exprsum       tabulate operator and function evaluation
     farb          generate Farberisms
     farb2         generate Farberisms
     filecnvt      convert line terminators
     fileprep      prepare file information for IPL indexes
     fileprnt      display characters in file
     filesect      produce section of a file
     filexref      cross-reference files by components
     filtskel      skeleton for generic filter
     findstr       find embedded character strings
     findtext      retrieve data from files indexed by idxtext
     fixhqx        strip headers from BinHex files
     fixpath       replace path in a binary file
     fnctab        list function usage
     fnctmpl       produce function templates
     format        word wrap a range of text
     former        format long string in fixed-length lines
     fract         approximate real number as a fraction
     fset          do set operations on file specifications
     fuzz          perform fuzzy pattern matching
     gcomp         produce complement of file specification
     gediff        "diff" for use with ged
     genqueen      solve arbitrary-size n-queens problem
     getmail       parse a mail folder
     graphdem      demonstrate simple bar graphics
     grpsort       sort groups of lines
     hcal4unx      Jewish/Civil calendar in UNIX
     headicon      add header to Icon program
     hebcalen      combination Jewish/Civil calendar
     hebeng        print mixed Hebrew/English text
     hotedit       edit a Mosaic hotlist
     hr            play horse-race game
     htprep        prepare HTML files
     huffstuf      huffman coding
     hufftab       compute Huffman state transitions
     ibar          equalize comment bars in Icon programs
     ibrow         browse Icon files for declarations
     icalc         simulate infix desk calculator
     icalls        tabulate Icon calls
     icn2c         assist Icon-to-C porting
     icontent      list Icon procedures
     icvt          ASCII/EBCDIC program conversion
     idepth        report maximum recursion depth
     idxtext       creating indexed text-base
     ifilter       filter lines of file
     ifncsgen      generate procedure wrappers for functions
     igrep         string search similar to egrep
     iheader       list Icon program library headers
     ihelp         give on-line help for Icon
     iidecode      decode text in style of uudecode
     iiencode      encode text in the style of uuencode
     ilnkxref      produce Icon link cross reference
     ilump         lump linked Icon source files
     imagetyp      show types of image files
     ineeds        print modules required by an Icon program
     inter         find common values in two lists
     interpe       interpret Icon expressions
     interpp       interpret Icon programs
     ipatch        patch iconx path in executable
     ipldoc        collect library documentation
     iplindex      produce indexed listing of the program library
     iplkwic       produce keywords in context for IPL
     iplweb        generate web pages from IPL header comments
     ipp           preprocess Icon programs
     iprint        print Icon program
     iprofile      profile Icon procedure usage
     ipsort        sort Icon procedures
     ipsplit       split Icon program into files
     ipxref        cross reference Icon program
     irunerr       print Icon runtime errors
     isrcline      count code lines in Icon program
     istrip        strip comments from Icon program
     itab          entab an Icon program
     itags         create tags file for Icon programs
     itrbksum      give summary of traceback
     itrcfltr      filter trace output
     itrcsum       give summary of trace output
     iundecl       find undeclared Icon identifiers
     iversion      show icode version
     iwriter       write Icon code to write input
     knapsack      fill a container
     krieg         play kriegspiel
     kross         show intersections of strings
     kwic          produce keywords in context
     kwicprep      prepare Icon program for WKIC
     la            give exponent approximation for large numbers
     labels        format mailing labels
     lam           laminate files
     latexidx      process LaTeX idx file
     lc            count lines in file
     lcfile        convert file names to lowercase
     lindcode      produce Icon code from L-system specifications
     lineseq       write a sequence of values on a line
     lisp          interpret LISP programs
     lister        list filess
     listev        list events
     listviz       visualize lists
     literat       manage literature information
     loadmap       show load map of UNIX object file
     longest       write longest line in a file
     lower         map file names to lowercase
     lssum         sum the file sizes in an ls -l listing
     makepuzz      make find-the-word puzzle
     memsum        tabulate memory allocation
     missile       play missile command game
     miu           generate strings from MIU system
     mkpasswd      make passwords
     monkeys       generate random text
     morse         convert string to Morse code
     mr            read mail
     mtf3          map tar file
     newicon       produce new Icon program file
     newsrc        organize UNIX .newsrc file
     nim           play the game of nim
     nocr          convert MS-DOS text files to UNIX
     numsum        tabulate numerical computation
     oldicon       update the date in an Icon program header
     opersum       tabulate operation activity
     ostrip        show virtual-machine op-code strip
     pack          package multiple files
     paginate      insert formfeeds
     papply        apply procedure to lines of file
     parens        produce random balanced strings
     pargen        generate context-free parser
     parse         parse simple statements
     parsex        parse arithmetic expressions
     patchu        implement UNIX-like patch
     pbkdump       dump HP95 phone book file
     pdecomp       list primes factors of an integer
     playev        play back events
     polydemo      demonstrate polynomial library
     post          post news
     press         archive files
     procprep      produce input to index for procedure comments
     procwrap      produce Icon procedure wrappers
     proto         show Icon syntactic forms
     psrsplit      separate psrecord.icn output pages
     pt            produce parse table generator
     puzz          create word search puzzle
     qei           evaluate Icon expressions interactively
     qt            announce time in English
     queens        generate solutions to the n-queens problem
     ranstars      display star field
     recgen        generate context-free recognizer
     recordev      record events
     reply         reply to news-articles or mail
     repro         self-reproduce
     revsort       sort strings backwards
     roffcmds      list roff commands and macros
     rsg           generate randomly selected sentences
     ruler         write a character ruler
     scramble      scramble a document
     setmerge      combine sets of text items
     shar          create UNIX shell archive
     shortest      write shortest line in a file
     shuffile      shuffle lines in a file
     sing          sing The Twelve Days of Christmas
     snake         play the snake game
     solit         play solitaire
     sortname      order by last name
     sortt         sort table into records
     splitlit      create string literal
     streamer      append lines of file into one long line
     strimlen      produce lengths of string images.
     strpsgml      strip/translate SGML tags
     strsum        tabulate string computation
     tablc         tabulate characters in a file
     tablw         tabulate words in a file
     textcnt       tabulate properties of text file
     textcvt       convert text file formats
     toktab        summarize Icon token counts
     trim          trim lines in a file
     ttt           play tic-tac-toe
     turing        simulate a Turing machine
     unique        delete identical adjacent lines
     unpack        unpackage files
     upper         map file names to uppercase
     utrim         remove unneeded procs from ucode
     verse         generate bizarre verses
     versum        produce versum sequence
     vmsum         tabulate virtual-machine operations
     vnq           display solutions to n-queens problem
     what          identify source-code information
     when          show file age
     wshfdemo      demonstrate weighted shuffle procedure
     xtable        show character code translations
     yahtz         play yahtzee
     yescr         convert UNIX files to DOS format
     zipsort       sort mailing labels by ZIP code

8.2 Programs -- gprogs

     autotile      produce tile from XBM image
     binpack       demonstrate some bin packing algorithms
     bitdemo       demonstrate bitplanes
     bme           edit bitmap
     ca21          investigate cellular automata
     calib         calibrate color monitor
     chernoff      imitate a Chernoff face
     coloralc      test color allocation
     colormap      display palette from color list
     colrbook      show the named colors
     colrname      browse color names
     colrpick      pick RGB or HLS colors
     concen        play solitaire card game Concentration
     cquilts       create "chaotic square quilts"
     cw            manipulate color ways
     design1       draw spokes design
     design2       draw circular design
     design3       draw square design
     drip          demonstrate color map animation
     etch          distributed Etch-A-Sketch
     facebend      generate caricatures
     fev           display text in fisheye view
     findrpt       find smallest repeat in a repeat pattern.
     flake         draw a fractal snowflake
     fontpick      show the characters of a font
     fract         demonstrate fractal lines
     fractclr      map Fractint color maps to Icon color lists
     fstarlab      draw fractal stars
     gallery       display many .gif/.xpm files at once
     giftoims      convert GIF files to image strings
     gpxtest       test graphics procedures
     gxplor        explore graphics facilities
     hb            Hearts & Bones game
     histo         display simple histogram
     hsvpick       pick RGB or HSV colors
     hvc           pick colors for Tek HVC space
     img           create images
     imgcolrs      list colors in images.
     imgpaper      tile images to form wallpaper
     imgtolst      convert image to list of pixel colors
     imlreduc      reduce bi-level image strings
     imltogif      convert image strings to GIF files
     ipicker       print name of selected images
     iview         display image files
     julia1        display the Julia set
     kaleid        produce kaleidoscope
     kaleido       produce kaleidoscopic display
     keypunch      simulate a keypunch
     koch          demonstrate Koch curves
     lindcomp      compile 0L-systems
     linddefs      produce table of L-systems
     linden        generate sentences in 0L-systems
     lorenz        display Lorenz strange attractor
     lsys          experiment with Lindenmayer systems
     mandel1       display the Mandelbrot set
     mandel2       draw the Mandelbrot set
     moire         display Moire patterns
     offtiler      tile images with offset
     orbit         display quadratic orbit
     painterc      convert Painter color sets to Icon colors
     palcheck      check palindromic sentences
     palette       display an Icon image palette
     patfetch      extract patterns from a file
     penelope      edit graphic patterns
     pextract      separate good and bad patterns
     pgmtoims      make an image from a PGM file
     picktile      pick a tile out of an image
     plat          create image file with specified colors
     pme           edit pixmaps
     profiler      display number magnitudes
     prompt        prompt in a window
     randweb       draw random web design
     recticle      draw rectangles recursively
     rings         draw tiles of rings and circles
     rolypoly      draw "abstract" art
     rstarlab      draw regular stars
     scroll        scroll image
     seamcut       cut image for seamless tiling
     selectle      select tile from an image
     sensdemo      demonstrate sensor routines
     showcolr      list colors in Icon palettes
     showtile      display tiles
     sier          generalized Sierpinski's triangle
     sier1         draw the Sierpinski triangle
     sier2         display the Sierpinski fractal
     snapper       display images
     spectra       report color spectra in images
     spiral        draw polygonal spirals
     spiro         display spirograph lines
     splat         drop paint splatters in a window
     striper       make striped pattern from image edge
     subdemo       show the turtle graphics subset
     sym4mm        draw symmetrically
     symdraw       draw symmetrically
     sympmm        produce pmm symmetry composite images.
     testpatt      show test patterns
     textures      show various 4x4 patterns
     tgdemo        demonstrate turtle graphics
     travels       animate the traveling salesman problem
     trycolor      investigate color specifications
     tryfont       demonstrate X font rankings
     uix           translate user interfaces
     viewpane      view image through a "pane"
     vqueens       display solutions to the n-queens problem
     wevents       report Icon window events
     wheel         show wheel of colors
     xbm2pat       convert XBM file to pattern specification
     xformpat      apply transformation to patterns
     xgamma        configure X color correction
     xpmtoims      make Icon images from XPM files
     zoomtile      show a tile magnified

8.3 Procedures -- procs

     abkform       process HP95LX appointment books
     adjuncts      gettext and idxtext
     adlutils      process address lists
     allof         conjunction control operation
     allpat        produce all n-character patterns of characters
     ansi          ANSI-based terminal control
     apply         apply a list of functions to an argument
     argparse      parse pseudo-command-line
     array         n-dimensional arrays
     asciinam      ASCII name of unprintable character
     basename      produce base name of file
     binary        pack and unpack values
     bincvt        convert binary data
     binop         apply binary operation to list of values
     bitint        convert integers and bit strings
     bitstr        bits in Icon strings
     bitstrm       read and write strings of bits in files
     bkutil        HP95LX phone books and appointment books
     bold          enbolden and underscore text
     bufread       buffered read and lookahead
     calendat      get date from Julian Day Number
     calls         calls as objects
     capture       echo output to a second file
     caseless      perform caseless scanning
     codeobj       encode and decode Icon data
     colmize       arrange data into columns
     complete      complete partial input string
     complex       perform complex arithmetic
     convert       various conversions
     created       determine number of structures created
     currency      formatting currency
     date          produce date
     datefns       dates
     datetime      date and time operations
     dif           check for differences
     digitcnt      count number of digits in file
     ebcdic        convert between ASCII and EBCDIC
     empgsup       support empg
     emptygen      meta-translation code generation
     equiv         compare structures
     escape        interpret Icon literal escapes
     escapesq      deal with character string escapes
     eval          evaluate string as a call
     evallist      produce a list generated by expression
     evaltree      maintain activation tree
     eventgen      meta-variant code generation
     everycat      generating all concatenations
     evinit        event monitoring
     evnames       map between event codes and names
     evsyms        produce table of event codes and symbols
     evtmap        map event code names to values
     exprfile      produce programs on the fly
     factors       related to factors and prime numbers
     fastfncs      integer functions using fastest method
     feval         evaluate string as function call
     filedim       compute file dimensions
     filenseq      get highest numbered filename in a sequence
     findre        find regular expression
     ftype         produce type for file
     fullimag      produce complete image of structured data
     gauss         compute Gaussian distributions
     gdl           get directory lists
     gdl2          get directory lists
     gen           meta-variant code generation
     gener         generate miscellaneous sequences
     genrfncs      generate sequences
     getchlib      getch for UNIX
     getkeys       get keys for a gettext file
     getmail       parse mail file
     getpaths      generate elements in path
     gettext       gettext (simple text-base routines)
     graphpak      manipulating directed graphs
     hetero        test structure typing
     hexcvt        hexadecimal conversion
     hostname      produce host name
     ibench        support Icon benchmarking
     ichartp       a simple chart parser
     identgen      meta-translation code generation
     identity      produce identities for Icon types
     ifncs         wrappers for function tracing
     iftrace       trace Icon function calls
     image         produce images of Icon values
     inbits        read variable-length characters
     indices       produce indices
     inserts       build tables with duplicate keys
     intpdco       programmer-defined control operations
     intstr        create string from bits
     io            input and output
     iolib         termlib support
     iscreen       screen functions
     isort         customizable sorting
     ispf          communicate between Icon and ISPF
     iterfncs      recursive functions using iteration
     itlib         termlib-type tools
     itlibdos      MS-DOS termlib-type tools
     itokens       tokenizing Icon code
     itrcline      filter out non-trace lines
     ivalue        convert string to Icon value
     jumpque       jump element to head of queue
     kmap          map keyboard letter forms into letters
     labeler       produce successive labels
     lastc         string scanning
     lastname      produce last name
     lcseval       evaluate linear congruence parameters
     list2tab      write list as tab-separated string
     lists         manipulate lists
     loadfile      produce and load program on the fly
     longstr       match longest string
     lrgapprx      approximate integer values
     lu            LU manipulation
     mapbit        map string into bit representation
     mapstr        map() for strings
     matchlib      lexical matching
     math          mathematical computations
     matrix        matrix manipulation
     memlog        log memory usage
     memrfncs      recursive functions using memory
     models        model Icon functions
     morse         convert string to Morse code
     mset          multi-sets
     namepfx       produce prefix portion of name
     ngrams        generate n-grams
     noncase       case-independent matching
     numbers       related to numbers
     openchk       aid in open/close debugging
     opnames       produce opcode/names table
     opsyms        produce table to map opcodes to symbols
     options       get command-line options
     outbits       write variable-length characters
     packunpk      pack and unpack decimal strings
     parscond      condense parse tree
     partit        partition integer
     pascal        write Pascal triangles
     pascltri      compute a row of Pascal's Triangle
     patch         UNIX-like patch(1)
     patterns      SNOBOL4-style pattern matching
     patword       find letter patterns
     pbkform       process HP95 phone book files
     pdae          programmer-defined argument evaluation
     pdco          programmer-defined control operations
     phoname       generate letters for phone numbers
     plural        produce plural of English noun
     polystuf      manipulating polynomials
     popen         pipes
     printcol      format columnar data
     printf        printf-style formatting
     prockind      indicate kind of procedure
     procname      produce name of procedure
     progary       place program in a array
     pscript       explicitly writing PostScript
     random        related to random numbers
     rational      arithmetic on rational numbers
     readcpt       read produce "carpet" from file
     readtbl       read user-created stripsgml table
     rec2tab       write record as string
     recog         recognition
     recrfncs      recursive functions
     recurmap      map recurrence declarations to procedures
     reduce        perform operation on list of arguments
     regexp        regular-expression pattern matching
     repetit       find smallest repetition pattern in list
     revadd        generate reverse-summed integers
     rewrap        advanced line rewrap
     rexx          communicate between Icon and Rexx
     rng           generate random numbers
     sandgen       "evaluation sandwiches" code
     scan          related to scanning
     scanmodl      model string scanning
     scanset       setup for string scanning procedures
     segment       segment string
     senten1       generate sentences
     sentence      generate sentences in file
     seqimage      produce string image of Icon result sequence
     serial        return serial number of structure
     sets          set manipulation
     showtbl       show contents of a table
     shquote       quote word for UNIX-like shells
     signed        put bits into signed integer
     sort          sorting
     soundex       produce Soundex code for name
     soundex1      Soundex algorithm
     speedo        indcate percentage of completion
     spin          spin cursor
     statemap      table of states and abbreviations
     step          generate in real increments
     str2toks      convert string to tokens
     strings       manipulating strings
     strip         strip characters from a string
     stripcom      strip comments from Icon line
     stripunb      strip unbalanced material
     tab2list      put tab-separated strings in list
     tab2rec       put tab-separated strings in records
     tables        table manipulation
     tclass        classify values as atomic or composite
     title         produce title portion of name
     titleset      produce set of titles
     tmpname       get temporary file name
     tokgen        token counting
     trees         manipulating trees and dags
     tuple         process n-tuples
     typecode      produce letter code for Icon type
     typesyms      map type codes to event codes
     unsigned      put bits unsigned integer
     usage         service functions
     varsub        perform UNIX-shell-style substitution
     version       produce Icon version number
     wdiag         write values with labels
     weighted      shuffle list with randomness
     wildcard      UNIX-like wild-card pattern matching
     word          scan UNIX-style command line words
     wrap          wrap output lines
     writecpt      write a "carpet" file
     xcode         save and restore Icon data
     xforms        do matrix transformations
     ximage        produce string image of structured data
     xrotate       rotate values in list or record

8.4 Include files -- incl

     etdefs        artificial event codes
     evdefs        event codes
     invkdefs      operator symbols
     opdefs        Icon virtual-machine instructions

8.5 Procedures -- gprocs

     attribs       set attributes via dialog
     autopost      activate PostScript recorder
     barchart      dynamically growing barchart
     bevel         drawing beveled objects
     bitplane      bitplane manipulation
     button        pushbutton sensors
     cardbits      constructing playing card images
     clip          clipboard operations
     clrnames      generate color names
     color         dealing with colors
     colorway      manipulate color ways
     colrlist      produce list of colors
     colrmodl      convert between color models
     curves        generate points on plain curves
     curves1       generate points on plain curves
     curves2       generate points on plain curves
     decay         decaying-displays for windows
     dialog        dialogs
     dialogs       link to dialog
     distance      compute distance in n-dimensions
     drag          dragging rectangles
     drawcard      draw a playing card
     drawlab       draw figures
     dsetup        creating dialog boxes
     enqueue       queued events
     event         produces events from a window event history
     evmux         window event multiplexor
     evplay        "play back" recorded window events
     evrecord      record window events
     fetchpat      fetch a pattern specification
     fstars        produce traces of fractal stars
     fstartbl      produce calls for fractal stars
     gdisable      disable graphics functions
     getcolrs      getting color palette
     gifsize       return size of GIF file
     glabels       produce graph ticks
     glib          graphics
     gobject       geometrical objects
     gpxlib        graphics tasks
     gpxop         graphics operations
     graphics      graphics
     grecords      graphics
     gtrace        process graphic traces
     ifg           tell if graphics are running
     imagedim      getting image dimensions
     imageseq      write sequences of images
     imgcolor      produce table of colors in area
     imscanon      put bi-level image string in canonical form
     imscolor      manipulating images
     imsutils      manipulate image specifications
     imutils       link graphics utilities
     imxform       transform image matrices
     interact      support interactive applications
     joinpair      connect pairs of points
     jolygs        produce traces of "jolygons"
     linddraw      draw L-System strings
     lindgen       rewriting 0L-systems
     lindrec       L-systems
     lindterp      interpret and draw L-System strings
     lsystem       Lindenmayer systems support
     modlines      produce trace of modular lines
     optwindw      open window with standard options
     orbits        produce traces of orbits
     overlay       overlay an image in a window
     patutils      manipulate patterns
     patxform      transform patterns in row form
     pixelmap      create image from pixel list
     psrecord      PostScript record of window
     putpixel      write quantized, processed pixel
     randarea      generate random points in areas
     randfigs      generate random figures
     rawimage      write and read images in raw format
     rgbcomp       perform computations on RGB values
     rgbrec        produce RGB record from color specification
     rpolys        produce traces of regular polygons
     rstars        generate traces of regular stars
     rstartbl      produce calls for regular stars
     select        get selection from window
     slider        slider sensors
     spirals       produce traces of fractal stars
     spokes        draw spokes
     strpchrt      dynamic stripchart for windows
     subturtl      turtle-graphics (subset version)
     symrand       generate random points
     tile          tile window
     tiler         tile window with image
     turtle        turtle-graphics interface
     twists        produce traces of "twists"
     vbuttons      buttons
     vcoupler      coupler variables
     vdialog       dialog boxes
     vframe        pane frame vidgets
     vgrid         vidget grids
     vidgets       vidgets
     viface        interfacing vidgets
     vmenu         vidget menus
     vpane         vidget panes
     vquery        window queries
     vradio        radio buttons
     vscroll       scrollbars
     vsetup        vidget application setup
     vslider       sliders
     vstd          standard lookups
     vstyle        drawing buttons
     vtext         textual vidgets
     wattrib       attributes
     win           open bare-bones window
     window        opening window
     winsnap       take snapshot of a portion of a window
     wipe          wipe window area
     wopen         graphics input/output
     xbfont        X font selection
     xcolor        link color
     xcompat       compatibility with 8.10 graphics
     xform         transform points
     xformimg      transform image
     xforms        do matrix transformations
     xgtrace       draw traces of points
     xio           link window I/O
     xplane        link bitplane
     xputpixl      link putpixel
     xqueue        link enqueue
     xutils        graphics utilities

8.6 Include files -- gincl

     keysyms       event key symbols
     maccolor      Macintosh color mappings
     vdefns        visual interface
     xcolors       X color names
     xnames        graphic procedure names

8.7 Loadable C functions -- cfuncs

     bitcount.c    count bits in an integer
     files.c       manipulate file attributes
     fpoll.c       poll file for input
     internal.c    access Icon internals
     lgconv.c      convert large integer to string
     osf.c         return OSF system table value
     pack.c        pack and unpack binary data
     ppm.c         manipulate PPM files in memory
     process.c     manipulate UNIX processes
     tconnect.c    open TCP connection

8.8 Data -- data

     *.csg         data for csg.icn
     *.krs         data for kross.icn
     *.lbl         data for labels.icn
     *.rsg         data for rsg.icn
     *.tok         sample output of syntactic token counting
     *.tur         data for turing.icn
     *.txt         plain text
     chart.gmr     data for ichartp.icn
     conman.sav    data for conman.icn
     farber.sen    "Farberisms"
     header        skeleton header for Icon program files
     hebcalen.dat  data read by hebcalen.dat
     hebcalen.hlp  help file for hebcalen.dat
     hebcalpi.hlp  data read by ProIcon version of hebcalen.dat
     icon.wrd      English words containing the substring "icon"
     ihelp.dat     data for ihelp.icn
     linden.dat    input to xlinden.dat
     noci.wrd      English words containing the substring "noci"
     palin.sen     Palindromic sentences
     pas128.cpt    Pascal triangle carpet to 128
     pt*.gmr       data for pt.icn
     sample.grh    sample data for graphpak.icn
     skeleton.icn  skeleton used to create/update Icon programs
     termcap.dos   termcap data for MS-DOS
     termcap2.dos  alternative termcap data for MS-DOS
     verse.dat     vocabulary for verse.icn

8.9 Data -- gdata

     *.clr         color lists, mostly from Icon palettes as named
     *.gif         GIF images
     *.iml         lists of image strings
     *.ims         image strings in Icon code format
     *.lch         data for gpacks/tiger/tgrmap.icn
     *.pts         data for facebend.icn
     gpxtest.gif   GIF image from gpxtest.icn
     gxplor.dat    test script for gxplor.icn
     linden.dat    input to linden.icn
     uix.dat       data for testing XIB-to-VIB conversion
     vibapp.icn    sample VIB application
     xibapp.icn    sample XIB application
     xnames.ed     ed(1) script to convert 8.10 function names to 9.0

8.10 Documentation -- docs

     address.doc   documentation for address procedures
     hebcalen.hlp  documentation for hebcalen.icn
     hebcalpi.hlp  documentation for hebcalpi.icn
     iconmake.doc  make skeleton for Icon
     ipp.doc       supplementary documentation for ipp.icn
     mr.man        manual page for mr.icn
     post.1        manual page source for post.icn
     polywalk.txt  description of polynomial programs
     procs.pdx     index to procedures
     pt.man        manual page for pt.icn
     *.fdx         indexes to files

8.11 Documentation -- gdocs

     gprocs.pdx    index to procedures
     gtrace.doc    documentation for graphic traces
     penelope.ps   PostScript documentation for penelope.icn
     vib.ps        PostScript documentation for interface builder
     vidgets.ps    PostScript documentation for vidgets
     *.fdx         indexes to files

8.12 Packages -- packs

     ftrace        function tracing
     ibpag2        LR-based parser generator
     idol          Idol; object-oriented Icon written in Icon
     itweak        interactive debugger
     loadfunc      C functions loaded dynamically
     skeem         Scheme language, implemented in Icon

8.13 Packages -- gpacks

     drawtree      tree drawing package
     ged           window-based editor
     tiger         map drawing from Census TIGER data
     vib           graphics interface builder

9. Contributions to the Icon Program Library

New material for the Icon program library always is welcome. See Reference 3
for guidelines and submission instructions.

10. Feedback

If you encounter problems with material in the Icon program library, please
let us know. If you can provide corrections or improvements to library
material, please send them by electronic mail or on a diskette.

We can be reached as follows:

     Icon Project
     Department of Computer Science
     The University of Arizona
     P.O. Box 210077
     Tucson, AZ 85721-0077
     U.S.A.

     (520) 621-6613 (voice)
     (520) 621-4246 (fax)

     icon-project@cs.arizona.edu

Acknowledgements

Dozens of persons have contributed material to this release of the Icon
program library. See the program material itself for authorship information.

References

1. R. E. Griswold, C. L. Jeffery and G. M. Townsend, Version 9.3 of the Icon
Programming Language, The Univ. of Arizona Icon Project Document IPD278,
1996.

2. G. M. Townsend, R. E. Griswold and C. L. Jeffery, Graphics Facilities for
the Icon Programming Language; Version 9.3, The Univ. of Arizona Icon
Project Document IPD281, 1996.

3. R. E. Griswold, Icon Program Library Submissions, The Univ. of Arizona
Icon Project Document IPD151,1996.
