The Icon Program Library; Version 9.3.3

Ralph E. Griswold and Gregg M. Townsend

Department of Computer Science
The University of Arizona
Tucson, Arizona

IPD283b
July 3, 2000
http://www.cs.arizona.edu/icon/docs/ipd283.htm


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 [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.

Unloading the Library

Note: The complete library, when unloaded, requires about 12MB 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
      |
      |--mdata                   as above, but for MT Icon
      |
      |--mdocs
      |
      |--mincl
      |
      |--mpacks
      |
      |--mprocs
      |
      |--mprogs
      |
      |--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.

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.

Installing the Library

Installing the Icon program library consists of two steps: (1) translating the procedure files to produce ucode files and (2) compiling 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 basic and graphics programs are compiled and linked using icont without the -c option, as in

icont deal

which comiples and links deal.icn, a program that produces randomly selected bridge hands. The MT Icon programs must be compiled with mticont, not icont.

The result of compiling 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 compiling 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.

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.

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.

Contents

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
allocwrl    display storage allocation in VRML
animal      play "animal" guessing game
applyfnc    apply function to lines of a file
banner      display banner
based       do BASIC-style editing
bfd         compute best-fit-descending bin packing
bj          play blackjack game
blnk2tab    convert strings of 2 or more blanks to tabs
c2icn       assist C-to-Icon porting
calc        simulate desk calculator
catlines    concatenate lines of a file
chars       list the different characters in a file
chkhtml     check HTML files
chop        restrict numerical values
colm        arrange data into columns
colorup     produce a weave structure from unravel data
comfiles    list common files in two directories
compare     look for duplicates in a collection of files
comply83    check compliance with MS-DOS name restrictions
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
cwd         write current working directory
daystil     calculate the number of days until a given date
dd2draft    create draft information from drawdown
dd2res      compute loom resources needed from drawdown
dd2wif      produce a WIF from drawdown
ddfdump     print the contents of an ISO 8211 DDF file
deal        deal bridge hands
declchck    detect possible declaration errors
delam       delaminate file
delamc      delaminate file using tab characters
dellines    delete lines from a file
delta       list differences between successive numbers
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
drawup      create draft from drawdown
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
extweave    extract weaving specifications from weave file
farb        generate Farberisms
farb2       generate Farberisms
filecnvt    convert line terminators
filehtml    create Web page with links to files
fileprep    prepare file information for IPL indexes
fileprnt    display characters in file
filerepl    replicate 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
floats      count floats
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
geddump     dump contents of GEDCOM file
gediff      "diff" for use with ged
gener       generate sequence from Icon expression
genfile     generate sequence from Icon expression in file
genqueen    solve arbitrary-size n-queens problem
getcol      extract column from data
getlines    extract lines from a file
gftrace     generating function tracing procedures
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
htget       get Web file using HTTP protocol
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
imaghtml    produce Web page for image files
indxcomp    assist in index compilation
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
ipower      write sequence of powers
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
irsort      sort Icon record declaration
irunerr     print Icon runtime errors
isd2disd    show convert ISD draft to drawdown form
isd2wif     produce WIF from ISD
iseq        write sequence of integers
isize       measure size of an Icon program
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 information for IPL KWIC listings
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
lcn         tp convert file names to all lowercase
limitf      limit throughput
lindcode    produce Icon code from L-system specifications
lindsys     generate sentences in 0L-systems
lineseq     write a sequence of values on a line
link2url    convert links to URLs
lisp        interpret LISP programs
lister      list filess
listhtml    create Web page with links to listed files
listviz     visualize lists
literat     manage literature information
ll          list shortest and longest lines in a file
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
lsysmap     map L-system symbols
maccvt      convert Macintosh special characters to ASCII
makepuzz    make find-the-word puzzle
mapcolrs    map colors in lists
midisig     show signature of a MIDI file
missile     play missile command game
miu         generate strings from MIU system
mkpasswd    make passwords
monkeys     generate random text
morse       convert string to Morse code
mover       move files from one name to another
mr          read mail
mszip       ZIP a directory for MS-DOS use
mtf3        map tar file
mtutils     fpr MT Icon
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
normalize   normalize numeric channel
oldicon     update the date in an Icon program header
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
polydemo    demonstrate polynomial library
post        post news
press       archive files
pretrim     filter out first terms in an input stream
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
rcat        output a file from back to front
recgen      generate context-free recognizer
repeats     repeat stream
reply       reply to news-articles or mail
repro       self-reproduce
revfile     reverse the order of lines in a file
revsort     sort strings backwards
roffcmds    list roff commands and macros
rsg         generate randomly selected sentences
ruler       write a character ruler
sample      "sample" input stream
scale       scale numeric values in visualization stream
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
slice       write long line as multiple short lines
snake       play the snake game
solit       play solitaire
sortname    order by last name
splitlit    create string literal
spread      format tab-separated data columns
streamer    append lines of file into one long line
strimlen    produce lengths of string images.
strpsgml    strip/translate SGML tags
tabexten    tabulate file extensions
tablc       tabulate characters in a file
tablw       tabulate words in a file
tabulate    tabulate lines 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
url2link    convert bookmarked URLs to link references
utrim       remove unneeded procs from ucode
verse       generate bizarre verses
versum      produce versum sequence 
vnq         display solutions to n-queens problem
vrepl       replicate input lines
weblinks    check links in HTML files
what        identify source-code information
when        show file age
wif2isd     convert WIFs to ISDs
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

Programs -- gprogs

autotile    produce tile from XBM image
binpack     demonstrate some bin packing algorithms
bitdemo     demonstrate bitplanes
bme         edit bitmap
bpack       demonstrate some bin packing algorithms
browser     demonstrate file-navigation "dialog"
ca21        investigate cellular automata
calib       calibrate color monitor
cameleon    allow user to change colors in an image
chernoff    imitate a Chernoff face
clrs2pdb    create custom palettes from color lists
coloralc    test color allocation
colormap    display palette from color list
colorwif    a WIF from unravel data
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
dlgvu       display USGS DLG map files
drawcolr    display color list
drip        demonstrate color map animation
etch        distributed Etch-A-Sketch
facebend    generate caricatures
fetti       explore families of confetti squares
fev         display text in fisheye view
fileimag    create GIF image of file text
findrpt     find smallest repeat in a repeat pattern.
findtile    find tiles in an image
flake       draw a fractal snowflake
flohisto    display float histograms
fmap2pdb    create custom palettes from color maps
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 images at once
gamma       perform gamma correction on images
gif2isd     produce a ISD from bi-level image
gif2wif     produce a WIF from black & white image
gifs2pdb    produce custom palettes from GIF images
giftoims    convert GIF files to image strings
giftopat    convert GIF image to hex-form pattern
gpxtest     test graphics procedures
gridedit    create and edit binary arrays
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
img2grid    convert images to grids
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
ims2pat     convert image string to bi-level pattern
imstogif    convert image strings to GIF files
ipicker     print name of selected images
isd2gif     create woven image from ISD
isd2grid    create grid plots for ISDs
isd2ill     create images from ISDs
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
linden      generate sentences in 0L-systems
lorenz      display Lorenz strange attractor
lsys        experiment with Lindenmayer systems
mandala     draw mandala design
mandel1     display the Mandelbrot set
mandel2     draw the Mandelbrot set
mercator    display surface of HLS color cones
mirroror    mirror images given on command line
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
plotter     display planes of 3-space coordinates
pme         edit pixmaps
poller      record image as pixel coordinates.
procater    display concatenation sizes
profile     display scrolling histogram
profiler    display number magnitudes
prompt      prompt in a window
randweav    create random weavable patterns
randweb     draw random web design
recticle    draw rectangles recursively
rectile     extract portion of image
rects       tile window with colored rectangles
repeater    repeat image
rings       draw tiles of rings and circles
rolypoly    draw ``abstract'' art
rstarlab    draw regular stars
scroll      scroll image
scroller    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
spokes      draw spokes design
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
tilescan    select tile from an image
travels     animate the traveling salesman problem
trycolor    investigate color specifications
tryfont     demonstrate X font rankings
uix         translate user interfaces
unravel     find thread colors for weaving
viewpane    view image through a "pane"
vqueens     display solutions to the n-queens problem
webimage    produce Web page for image files
wevents     report Icon window events
wheel       show wheel of colors
wifs2pdb    create palette database from WIFs
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

Programs -- mprogs

alcscope    visualize allocation as a kaleidoscopic display
alcview     display allocation events in various ways
algae       show expression evaluation as ``algae''
anim        show animated display of Icon source code
callcnt     count calls
cmpsum      tabulate comparisons
cnvsum      tabulate type-conversion activity
cvtsum      count conversion event tuples
events      show events
evstream    show events
evsum       tabulate event codes
exprsum     tabulate operator and function evaluation
listev      list events
locus       trace execution locus
memsum      tabulate memory allocation
mmm         show allocation as a miniature "MemMon"
napoleon    track memory usage by type
novae       show allocations as exploding stars
numsum      tabulate numerical computation
opersum     tabulate operation activity
ostrip      show virtual-machine op-code strip
playev      play back events
program     display portion of a program in a window
recordev    record events
roll        display the program counter on a stripchart
scat        produce call/result scatterplot
scater      display visualize string concatenation
strsum      tabulate string computation
strucget    collect SP stuctures
vc          coordinate visualization programs
vmsum       tabulate virtual-machine operations

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
base64      base64 encodings for MIME (RFC 2045)
basename    produce base name of a 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
calendar    data and time calculation and conversion
calendat    get date from Julian Day Number
calls       calls as objects
capture     echo output to a second file
cartog      cartographic projection 
caseless    perform caseless scanning
codeobj     encode and decode Icon data
colmize     arrange data into columns
colrspec    produce VRML color specifications
complete    complete partial input string
complex     perform complex arithmetic
conffile    read files of directives for "initialization"
converge    produce continued-fraction convergents
convert     various conversions
created     determine number of structures created
currency    formatting currency
curves      generate points on plain curves
datefns     dates
datetime    date and time operations
ddfread     reading ISO 8211 DDF files
dif         check for differences
digitcnt    count number of digits in file
divide      perform long division
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
eventgen    meta-variant code generation
everycat    generating all concatenations
expander    convert character pattern expressions
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
filesize    get the size of a file
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
gedcom      reading GEDCOM files
gen         meta-variant code generation
gener       generate miscellaneous sequences
genrfncs    generate sequences
geodat      geodetic datum conversion
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
html        parsing HTML
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
intstr      create string from bits
io          input and output
iolib       termlib support
iscreen     screen functions
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
lindgen     rewriting 0L-systems
lindstrp    interpret L-system output as striped pattern
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
makelsys    convert L-Systems to records
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
mixsort     sort tables with case mixing
models      model Icon functions
morse       convert string to Morse code
mset        multi-sets
namepfx     produce prefix portion of name
ngrams      produce 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
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
ptutils     relating to objects in 3-space
random      related to random numbers
rational    arithmetic on rational numbers
readcpt     read produce "carpet" from file
readtbl     read user-created stripsgml table
reassign    access RE groupings and format into a string
rec2tab     write record as string
recog       recognition
records     manipulate records
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
seqfncs     designing with sequences
seqimage    produce string image of Icon result sequence
seqops      perform operations on finite sequences
serial      return serial number of structure
sername     produce serialized names
sets        set manipulation
showtbl     show contents of a table
shquote     quote word for UNIX-like shells
signed      put bits into signed integer
skelproc    Procedure
sort        sorting
sortt       sort table into records
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
tieutils    related to weaving tie-ups
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
unsigned    put bits unsigned integer
usage       service functions
varsub      perform UNIX-shell-style substitution
verncnt     compute number of n-digit versum numbers
version     produce Icon version number
vhttp       validating an HTTP URL
vrml        support creation of VRML files
vrml1lib    support construction of VRML 1.0 files
vrml2lib    support construction of VRML 2.0 files
wdiag       write values with labels
weavgenr    Links to procedures related to sequence drafting
weaving     implement weaving expressions
weavutil    support numerical weavings
weighted    shuffle list with randomness
wifisd      convert WIF to xencoded ISD
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
xcodes      save and restore Icon data
xforms      do matrix transformations
ximage      produce string image of structured data
xrotate     rotate values in list or record
zipread     reading files from ZIP archives

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
cells       creating and coloring panels of cells
clip        clipboard operations
clipping    clipping lines
clrnames    generate color names
clrutils    convert color formats
color       dealing with colors
colorway    manipulate color ways
colrlist    produce list of colors
colrmodl    convert between color models
curves      generate points on plain curves
cwutils     support color ways
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
imrutils    deal with image records
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
isdplot     create grid plots for ISDs
joinpair    connect pairs of points
jolygs      produce traces of "jolygons"
linddefs    produce table of L-systems
linddraw    draw L-System strings
lindgen     rewriting 0L-systems
lindrec     L-systems
lindterp    interpret and draw L-System strings
lsystem     Lindenmayer systems support
mirror      mirror tile
modlines    produce trace of modular lines
navitrix    perform file navigation
optwindw    open window with standard options
orbits      produce traces of orbits
overlay     overlay an image in a window
palettes    programmer-defined palettes
patutils    manipulate patterns
patxform    transform patterns in row form
pixelmap    create image from pixel list
popular     show "popularity" of colors in image string
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
repeats     repeat image
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
tieedit     create and edit binary arrays
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
vfilter     change filter mode in sliders and scrollbars
vframe      pane frame vidgets
vgrid       vidget grids
vidgets     vidgets
viewpack    visualize color streams
viface      interfacing vidgets
vlist       a scrollable list vidget
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
weavegif    produce a woven image from a draft
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
xgtrace     draw traces of points
xio         link window I/O
xplane      link bitplane
xputpixl    link putpixel
xqueue      link enqueue
xutils      graphics utilities

Procedures -- mprocs

colormap    map type event to color
colortyp    produce table of colors for Icon types
em_setup    set up execution monitors 
emutils     support MT-Icon monitors
evaltree    maintain activation tree
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
evutils     support event monitoring
hexlib      hexagons
opname      map VM opcodes to their names
typebind    produce table of graphic contexts for type
typesyms    map type codes to event codes
viewpack    visualize color streams
visprocs    visualization code

Include files -- incl

invkdefs    operator symbols
lshade      VRML 1.0 ornament
opdefs      Icon virtual-machine instructions

Include files -- gincl

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

Include files -- mincl

etdefs      artificial event codes
evdefs      event codes

Loadable C Functions -- cfuncs

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

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
noci.wrd	English words containing the substring ``noci''
palin.sen	Palindromic sentences
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

Data -- gdata

*.gif		GIF image files
*.ims		image strings in Icon code format
*.lch		data for gpacks/tiger/tgrmap.icn
*.pts		data for facebend.icn
clr.pack	"pack" containing Icon's color palettes
gpxtest.gif	GIF image from gpxtest.icn
gxplor.dat	test script for gxplor.icn
iml.pak		image strings in "pack" format
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

Data -- mdata

There presently are no data files for MT-Icon.

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

Documentation -- gdocs

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

Documentation -- mdocs

mprocs.pdx	procedure indexes
*.fdx		file indexes

Packages -- packs

euler		Euler compiler and interpreter
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
tcll1		parser-generator and parser

Packages -- gpacks

carpets		numerical carpets
drawtree	tree-drawing package
ged		text editor
htetris		Tetris game
tiger		map drawing from Census TIGER data
vib		graphics interface builder
weaving		programs and procedures related to weaving
xtiles		game

Packages -- mpacks

There are no MT-Icon packages at present.

Contributions to the Icon Program Library

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

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. C. L. Jeffery, The MT Icon Interpreter, The Univ. of Arizona Icon Project Document IPD169, 1993.

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


Icon home page