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.