==================== Icon Program Library ==================== .. Modified: 2019-10-20/19:46-0400 btiffin .. Copyright 2016 Brian Tiffin .. This file is part of the Unicon Programming document .. GPL 3.0+ :ref:`license` .. image:: images/unicon.png :align: center .. only:: html :ref:`genindex` :floatright:`Unicon` .. index:: IPL .. _IPL: IPL === The Icon Program Library. A large collection of Icon programs/procedures and supporting data. Covers core utilities, like HTTP support in Icon, fun things, like games, and a plethora of short and long examples and samples. https://www.cs.arizona.edu/icon/library/ipl.htm The IPL is Public Domain source code, and is included with the Unicon distribution. Still useful for Unicon development, many of the more critical utilities have been superseded by features built into Unicon proper. HTTP support, for instance is just an ``"m"`` class Messaging option when using the :ref:`open` statement. One of the beauties of Unicon, is Icon with Networking (one, of the beauties). Exploring the IPL ----------------- Getting used to the IPL can be a little daunting at first, there are hundreds of programs, supporting data files and thousands of helpful procedures to take advantage of. The Programming with Unicon book details the contents of the IPL in Appendix B. The Arizona site link above also helps with figuring out all the useful little tidbits available. Learning what is where in the IPL is similar to getting used to the support libraries available with many languages, like ``PHP`` and ``Python``, or ``libc`` for that matter. When facing a problem, it can be worthwhile perusing the library. The procedures contained within can save time, effort and increase the odds of having correct code as the entries have been vetted by experts, and most edge cases are accounted for. Aside from reading, and searching, and exploring, there is no easy way to get used to large libraries. It takes time and experience to build up the knowledge. Start early. When first learning Unicon, it is well worth the extra minutes to look through the IPL directories. Early exposure might trigger a memory later on, when the task at hand requires an unfamiliar solution. Someone else may have already solved, or partially solved, the problem. Useful procedures ----------------- This list of handy IPL procs is based on a personal bias. Your "top-ten" list will likely be different, based on your own needs and priorities. .. index:: linker *Some of these IPL entries include multiple functions. Do not worry about bloat.* The :ref:`ucode ` linker will only include the procedures that are actually used from files with multiple procedures. .. index:: IPL; options, options options ....... This is *thee* way to handle Unicon command line options. Easy to use and defacto standard with Unicon programming. *Most programs should support version and help display. Everyone needs a little help from time to time.* .. sourcecode:: unicon procedure main(argv) opts := options(argv, "-h! -v!", errorproc) \opts["h"] & show_help() & return \opts["v"] & show_version() & return write("Non option arguments:") every write("\t", !argv) end procedure errorproc(s) write("Error in provided options:") write(s) end ... Option tags are user defined and can be single letter, ``-h``, or long form, ``-help`` (for instance), with modifiers of: :: ! no value required : string value required + integer value required . real value required If the optstring spec is omitted, any single letter is assumed valid with no follow up data. The null and non-null test operators can make for some very concise option handling source code. The returned table is key-value with the option (if present) as key, and any required follow up data as the value. The optional :c:data:`errorproc` defaults to displaying a message and stopping when invalid arguments are provided. The procedure is called with one argument: a string describing the error that occurred. After :c:func:`errproc()` is called, :c:func:`options()` immediately returns the outcome of :c:func:`errproc()`, without processing further arguments. An argument of ``--`` causes :c:func:`options()` to stop parsing options, and leaves all subsequent command line data in the ``argv`` argument list. The ``argv``\ [#arg]_ list provided to :c:func:`main()` will have all options and associated arguments removed from the list after the call to :c:func:`options()`. Unlike the GNU standard, long option names are single dash, not double dash when programming with the :c:func:`options()` procedure. .. [#arg] ``argv`` is just an identifier name, use anything you are comfortable with, *but remember that* :ref:`args` *is a built in function, so is not a recommended choice.* ``argv`` is provided to ``main`` as a :ref:`list` of strings in the same order as given on the command line. .. index:: IPL; ximage, ximage ximage ...... Unicon has :ref:`image` built in, but only displays a type summary for most of the aggregate structures. :c:func:`ximage()` is a routine, by Rob Alexander, that produces a :ref:`string ` image of |x|, but also includes all elements of structured data, indented to aid in visualizing nested structures. .. index:: IPL; wrap, wrap wrap .... The :c:func:`wrap()` procedure is a very handy way of displaying long lists of built up data. Initialize with :code:`wrap()` (if required following a previous use) then :code:`write(wrap(data, width))` inside loops, ending with a final :code:`write(wrap())` to finish off any buffered data. ``width`` defaults to 80 character positions. :file:`ipl/procs/wrap.icn`, :code:`link wrap`. .. literalinclude:: examples/ipl-wrap.icn :language: unicon :start-after: ##+ .. only:: html .. rst-class:: rightalign :download:`examples/ipl-wrap.icn` .. command-output:: unicon -s ipl-wrap.icn -x :cwd: examples -------- .. index:: IPL; strings, strings strings ....... The :file:`strings.icn` entry in the IPL encapsulates a lot of idiomatic Unicon in small functions. :file:`ipl/procs/strings.icn`, :code:`link strings`. - cat: concatenate strings - charcnt: character count - collate: string collation - comb: character combinations - compress: character compression - coprefix: find common prefix of strings - cosuffix: find common suffix of strings - csort: lexically ordered characters - decollate: string decollation - deletec: delete characters - deletep: delete by position - deletes: delete string - diffcnt: number of different characters - extend: extend string - fchars: characters in order of frequency - interleave: interleave strings - ispal: test for palindrome - maxlen: maximum string length - meander: meandering strings - multicoll: collate strings in list - ochars: first appearance unique characters - odd_even: odd-even numerical string - palins: palindromes - permutes: generate string permutations - pretrim: pre-trim string - reflect: string reflection - replace: string replacement - replacem: multiple string replacement - replc: replicate characters - rotate: string rotation - schars: lexical unique characters - scramble: scramble string - selectp: select characters - slugs: generate s in chunks of size <= n - starseq: closure sequence - strcnt: substring count - substrings: generate substrings - transpose: transpose characters - words: generate words from string It is very much worth knowing about the many helper functions in :file:`strings.icn`, and the source code gives good hints on idiomatic Unicon. .. index:: IPL; lists, lists lists ..... List manipulation routines. :file:`ipl/procs/lists.icn`, :code:`link lists`. - file2lst create list from lines in file - imag2lst convert limage() output to list - l_Bscan begin list scanning - l_Escan end list scanning - l_any any() for list scanning - l_bal bal() for list scanning - l_find find() for list scanning - l_many many() for list scanning - l_match match() for list scanning - l_move move() for list scanning - l_pos pos() for list scanning - l_tab tab() for list scanning - l_upto upto() for list scanning - llayer interleave lists with layering - lcompact compact sequence - lclose close open palindrome - lcomb list combinations - ldecollate list decollation - ldelete delete specified list elements - ldupl list term duplication - lequiv compare lists for equivalence - levate elevate values - lextend list extension - lfliph list horizontal flip (reversal) - lflipv list vertical flip - limage list image - lcollate generalized list collation - lconstant test list for all terms equal - lindex generate indices for items matching x - linterl list interleaving - llpad list padding at left - lrunup list run up - lrundown list run up - lltrim list left trimming - lmap list mapping - lresidue list residue - lpalin list palindrome - lpermute list permutations - lreflect list reflection - lremvals remove values from list - lrepl list replication - lreverse list reverse - lrotate list rotation - lrpad list right padding - lrtrim list right trimming - lshift shift list terms - lst2str convert list to string - lswap list element swap - lunique keep only unique list elements - lmaxlen size of largest list entry - lminlen size of smallest list entry - sortkeys extract keys from sorted list - sortvalues extract values from sorted list - str2lst list from string A few examples from this feature rich IPL entry: .. literalinclude:: examples/ipl-lists.icn :language: unicon :start-after: ##+ .. only:: html .. rst-class:: rightalign :download:`examples/ipl-lists.icn` .. command-output:: unicon -s ipl-lists.icn -x :cwd: examples -------- .. index:: IPL; numbers, numbers numbers ....... Another multiple procedure IPL entry. The :file:`numbers.icn` entry in the IPL encapsulates a lot of numeric Unicon in small functions. :file:`ipl/procs/numbers.icn`, :code:`link numbers`. - adp additive digital persistence - adr additive digital root - amean arithmetic mean - ceil ceiling - commas insert commas in number - decimal decimal expansion of rational - decipos position decimal point - digred sum digits of integer repeated to one digit - digroot digital root - digprod product of digits - digsum sum of digits - distseq generate low to high nonsequentially - div real division - fix format real number - floor floor - frn format real number - gcd greatest common divisor - gcdl greatest common divisor of list - gmean geometric mean - hmean harmonic mean - large detect large integers - lcm least common multiple - lcml least common multiple of list - mantissa mantissa (fractional part) - max maximum value - mdp multiplicative digital persistence - mdr multiplicative digital root - min minimum value - mod1 modulus for 1-based integers - npalins palindromic numbers - qmean quadratic mean - residue residue for j-based integers - roman convert integer to Roman numeral - round round real - sigma synonym for digroot() - sign sign - spell spell integer in American English - sum sum of numbers - trunc truncate real - unroman convert Roman numeral to integer For example, ``decipos`` can come in handy for aligning display lists. .. literalinclude:: examples/dtor.icn :language: unicon :start-after: ##+ .. only:: html .. rst-class:: rightalign :download:`examples/dtor.icn` .. command-output:: unicon -s dtor.icn -x :cwd: examples -------- Lisp .... The IPL contains a small, yet fairly complete, Lisp interpreter. :file:`ipl/progs/lisp.icn`. .. literalinclude:: examples/lisping.icn :language: unicon :start-after: ##+ .. only:: html .. rst-class:: rightalign :download:`examples/lisping.icn` The code above just prints a list. Build some :ref:`icode ` for lisping. .. command-output:: unicon -s -c -DNOMAIN lisp.icn :cwd: examples And evaluate some Lisp .. command-output:: unicon -s lisping.icn -x :cwd: examples Programming Corner ================== The Programming Corner was a feature of the Icon Newsletter which was published from 1979 through 2000, 60 issues. https://www.cs.arizona.edu/icon/inl/inl.htm The Corner was a short piece of wisdom, or a puzzler, or other educational item, usually shining a light on core idioms for the language. All of this wisdom applies to Unicon as well. https://www.cs.arizona.edu/icon/progcorn.htm This is information dating back to 1979, when the core language features in Icon were being worked out. There was also a desire to separate SNOBOL language features from Icon, and many of the articles attempt to explain how SNOBOL idioms may or may not apply to Icon/Unicon and how to watch out for the *SNOBOL Syndrome*. One of the first Programming Corner items, was about the idiom shift from SNOBOL to Icon control flow. The SNOBOL fragment ``(P1 P2) | P3`` may translate to Unicon as ``(e1 & e2) | e3`` or more clearly in most cases as :unicon:`if e1 then e2 else e3`. The Unicon way avoids some mutual evaluations, some potential backtracking and probably reads better to most programmers. .. todo:: fill in more wisdoms Newsletter Catalog ------------------ Thanks to David Gamey, there is a contents page for the Icon Newsletter issues. :: INL1 Icon Newsletter #1 INL1 Ratfor implementation available for CDC 6000/Cyber and Decsystem-10 INL2 Icon Newsletter #2 - August 4, 1979 INL2 1. Version 1.3 of Icon INL2 2. Feedback from Users INL2 3. Implementation Issues INL2 4. Portability Issues INL2 5. An Implementation of Icon in C INL2 6. Language Issues (and the SNOBOL4 syndrome) INL2 7. Documentation INL2 Acknowledgements INL3 Icon Newsletter #3 - February 22, 1980 INL3 Perspective on Icon INL3 Version 2 of Icon INL3 Feedback INL3 Portable Icon INL3 The C Implementation of Icon INL3 Programming Corner - scanning tab and move INL3 Distribution Request Forms - Version 2.0 and Portable Icon INL4 Icon Newsletter #4 - June 3, 1980 INL4 Icon for UNIX INL4 Features of Version 3 INL4 Future Directions INL4 Programming Corner - goal-directed evaluation and limiting backtracking INL4 Whimsy INL4 Publications INL4 Document Request INL4 Request for Version 3 of Icon INL5 Icon Newsletter #5 -December 31, 1980 INL5 1. Version 2 of Icon INL5 1.1 Status INL5 1.2 Existing Implementations INL5 1.3 Corrections to the Portable Implementation INL5 2. Version 3 of Icon INL5 3. Current Research INL5 3.1 Generators and Control Structures INL5 3.2 Generators in C INL5 3.3 Pattern Matching in Icon INL5 4. Other Icon Documents INL5 5. Programming Corner - puzzles and posed questions INL5 Acknowledgements INL5 Request for Icon Documents INL5 Portable Icon Distribution Request; Version 2.0 INL5 UNIX Icon Distribution Request; Version 3.2 INL6 Icon Newsletter #6 - May I. 1981 INL6 I. Portable Icon INL6 1.1 Implementations INL6 1.2 Word-Size Limitations INL6 1.3 Updated Corrections to Version 2 INL6 2. The UNIX Implementation of Icon INL6 2.1 Version 3 INL6 2.2 Version 4 INL6 3. Current Research INL6 3.1 Sequences and Expression Evaluation INL6 3.2 Models of String Pattern Matching INL6 3.3 Generators in C INL6 4. Programming Corner INL6 4.1 An Idiom INL6 4.2 Solutions to Questions Posed in Newsletter #5 INL6 Request for Icon Documents INL7 Icon Newsletter #7 - August 4, 1981 INL7 1. Version 4 of Icon INL7 2. Other Implementation News INL7 3. Programming Corner - self reproducing program INL7 References INL7 Request for Icon Documents INL 7 UNIX Icon Distribution Request; Version 4 INL8 Icon Newsletter #8 - November 30, 1981 INL8 1. Cg INL8 2. Version 5 of Icon INL8 3. Other Implementation News INL8 3.1 Version 2.1 Implementation for PRIME Computers INL8 3.2 Icon for the ONYX C8002 INL8 4. Icon Book INL8 5. Programming Corner INL8 Request for Icon Documents INL8 Request for Cg/Version 5 Icon INL9 Icon Newsletter #9 - August 22, 1982 INL9 Version 2 Implementation Information INL9 Version 5 Implementation Information INL9 Transporting the C Implementation of Icon INL9 1. The Icon Book INL9 Research Related to Icon INL9 Icon Documents INL9 Programming Corner - odd shuffle INL9 Request for Icon Documents INL9 Request for Version 2 Icon for the IBM 360/370 and VAX INL10 Icon Newsletter #10 - November 8, 1982 INL10 Version 5 Icon for the VAX Operating under UNIX* INL10 Version 5 Icon for the VAX Operating under VMS INL10 Porting the C Implementation of Icon INL10 The Icon Book INL10 Electronic Mail INL10 Programming Corner - result sequences INL10 Request for Version 5 Icon for VAX/UNIX INL11 Icon Newsletter #11 - March 8, 1983 INL11 Icon Book INL11 Version 5 Implementation Information INL11 Icon Program Library INL11 Icon Documents INL11 Programming Corner INL11 Contacting the Icon Project INL11 Request for Icon Documents INL11 Request for Release 5g of Icon for UNIX INL12 Icon Newsletter #12 - July 14, 1983 INL12 The Icon Compiler Versus the Interpreter INL12 Icon Program Library INL12 Transporting Icon to UNIX Environments INL12 Version 5 of Icon for the Onyx C8002 INL12 Version 5.8 of Icon INL12 Status of Version 5 of Icon for VAX/VMS INL12 Icon Discussion Group INL12 Version 2 Versus Version 5 of Icon INL12 Recent Icon Documents INL12 Programming Corner - N-Queens, N-Rooks, Scanning entire files, random numbers INL12 Request for Icon Documents INL12 Request for Version 5.8 of Icon for UNIX INL13 Icon Newsletter #13 - August 31, 1983 INL13 Version 5 of Icon for VMS INL13 Programming Corner: Random Numbers INL14 Icon Newsletter #14 - January 17, 1984 INL14 Survey INL14 Programming Corner: Answers; Returning More than One Value from a Procedure; Initial Assigned Values in Tables; Matching Expressions; Problems with Dereferencing; Syntactic Pitfalls; Trivia Corner INL14 Recent Icon Documents INL14 Request for Icon Documents INL15 Icon Newsletter #15 - June 7, 1984 INL15 1. Results from the Questionnaire INL15 2. Version 5 Implementation News INL15 3. Bugs in Version 5 VAX/VMS Icon INL15 4. Work in Progress: Version 5.9, Sets in Icon; Production Icon; Generators in Object-Oriented Languages INL15 5. Use of Icon in Computer Science Courses INL15 6. Portability of Version 5 INL15 7. Programming Corner: Assignment to Subscripted Strings; Trivia Corner; Pitfalls; INL15 8. Electronic Mail INL15 9. The Icon Mailing List INL15 10. New Documents INL15 Request for Icon Documents INL16 Icon Newsletter #16 - November 12, 1984 INL16 1. Implementations of Icon INL16 Version 5.9 of UNIX Icon INL16 Other Implementation News INL16 2. Bug in Version 5 of Icon INL16 3. Record Field References INL16 4. Comments on Teaching Icon and the Icon Book INL16 5. Rebus INL16 6. Programming Corner INL16 Chosing Programming Techniques in Icon INL16 Different Ways of Looking at Things INL16 7. Electronic Mail INL16 8. New Documents INL16 Request for Icon Documents INL16 Version 5.9 UNIX Icon Distribution Request INL16 Version 5.8 Eunice Icon Distribution Request INL17 Icon Newsletter #17 - March 1, 1985 INL17 1. Icon Distribution Policy INL17 2. Implementation News INL17 Icon for the Sun Workstation INL17 Icon for the AT&T 3B20 INL17 Version 5.9 of Icon for VAX/VMS INL17 3. Contributions from Users INL17 The Programming Language (Pascal-Icon) INL17 Generators in Smalltalk INL17 Logicon: An Integration of Prolog into Icon INL17 An Application for Linguistic Analysis INL17 4. Use of Icon in Computer Science Courses INL17 5. Programming Corner: Anagramming; INL17 Logicon: an Integration of Prolog into Icon INL17 1. Integration of Prolog into Icon INL17 1.1 Prolog Term Representation INL17 1.2 External Interface INL17 Entering Relations INL17 2. Uses of Logicon INL17 Bibliography INL17 Version 5.9 UNIX Icon Distribution Request INL17 Request for Version 5.9 of Icon for the AT&T 3B20 INL17 Request for Version 5.9 of Icon for VAX/VMS INL18 Icon Newsletter #18 - April 23, 1985 INL18 1. Implementation News INL18 Icon for the IBM PC under PC/IX INL18 Icon for AT&T 3B2/3B5 and for UNIX/PC INL18 Corrected Request Form for Version 5.9 VAX/VMS Icon INL18 Another Implementation Project INL18 2. An Icon Machine? INL18 3. Programming Corner INL18 4. New Documents INL18 Request for Version 5.9 of Icon for VAX/VMS INL18 Request for Version 5.9 of Icon for PC/IX INL18 Request for Icon Documents INL19 Icon Newsletter #19 - September 25, 1985 INL19 1. Implementation News INL19 Version 5.9 of Icon for MS-DOS Systems INL19 Version 5.9 of Icon for the WICAT INL19 Version 5.10 of Icon for UNIX Systems INL19 Version 5.10 of Icon for the UNIX-PC INL19 The IIT Implementation of Icon INL19 2. Implementation Book INL19 3. Contribution from a User INL19 4. New Documents INL19 Request for Icon Documents INL19 Request for Version 5.9 of Icon for MS-DOS INL19 Request for Version 5.10 of Icon for UNIX INL20 Icon Newsletter #20 - January 24, 1986 INL20 1. Implementation News INL20 Version 5.10 of Icon for AT&T 3B Computers INL20 Version 6 of Icon INL20 2. The Icon Program Library for DOS Systems INL20 3. Icon Workshop Anyone? INL20 4. Availability of the Icon Book INL20 5. New Payment Policy for Icon Materials INL20 6. Programming Corner: String Scanning; A Programming Idiom; Teasers; Other Exercises INL20 7. New Documents INL20 Acknowledgement INL20 Icon Workshop INL20 Request for Icon Documents INL20 Request for Version 5.9 of Icon for DOS INL21 Icon Newsletter #21 - June 10, 1986 INL21 1. Welcome, New Readers! INL21 2. Implementation News INL21 Version 6 of Icon INL21 Icon for DOS INL21 Version 5.10 on the Sun Workstation INL21 3. Payment for Icon Materials INL21 4. Status of the Icon Workshop INL21 5. From our Mail INL21 6. Programming Corner INL21 Correction INL21 Solutions to Previous Problems INL21 Request for Icon Documents INL21 Request for Version 6.0 of Icon for UNIX Systems INL21 Request for Version 6.0 of Icon for VAX/VMS INL21 Request for Version 5.9 of Icon for DOS INL22 Icon Newsletter #22 - October 21,1986 INL22 1. Newsletter Subscriptions INL22 2. Implementation News INL22 MS-DOS INL22 UNIX INL22 Implementations in Progress INL22 3. The Implementation Book INL22 4. Electronic Access INL22 Program Material via FTP INL22 Electronic Bulletin Board at the University of Arizona INL22 BIX INL22 5. From our Mail INL22 6. Programming Corner INL22 A Simple Calculator INL22 Acknowledgements INL22 Ordering Information INL22 Order Form INL23 The Icon Newsletter - Number 23 - February 3,1987 INL23 Questionnaires INL23 Status of the Newsletter INL23 Implementation News INL23 Icon for the Macintosh INL23 Icon for the Atari ST INL23 MS-DOS Icon INL23 Porting Icon to Other Computers INL23 The Implementation Book INL23 Access to the Icon Project INL23 Program Material via FTP INL23 Electronic Bulletin Board INL23 BIX INL23 From our Mail INL23 Programming Corner INL23 A Program to Deal and Display Bridge Hands INL23 Processing Command-Line Arguments INL23 Upcoming in the Newsletter INL23 Ordering Information INL23 Order Form INL24 The Icon Newsletter - Number 24 - June 13,1987 INL24 Welcome to New Subscribers INL24 Tabulation of Questionnaires INL24 Applications of Icon INL24 Prototyping at AT&T Information Systems INL24 Test Generation at Tartan Laboratories INL24 Report from a Conference INL24 Implementation News INL24 New Implementations INL24 Summary of Existing Implementations INL24 Stand-Alone Icon for the Mac INL24 Documents Related to Icon INL24 Implementation Documentation INL24 Technical Reports INL24 TR 87-2 A Recursive Interpreter for Icon INL24 TR 87-6 Programming in Icon; Part II - Programming with Co-Expressions INL24 IPD29 Supplementary Information for the Implementation of Version 6 of Icon, by Ralph E. Griswold. INL24 Back Issues of the Icon Newsletter INL24 From our Mail INL24 What is the Icon Project? INL24 Research in Progress INL24 Implementing Generators and Goal-Directed Evaluation INL24 Type Inference INL24 Pattern Matching in Real Time INL24 A New Language? INL24 The Icon Program Library- INL24 Programming Corner INL24 Correction INL24 Processing Command-Line Options INL24 Efficient Programming in Icon INL24 Puzzles and Such INL24 Upcoming in the Newsletter INL24 Our Army INL24 A SNOBOL's Chance INL24 Ordering Icon Material INL24 What's Available INL24 Program Material INL24 Documentation INL24 Order Form INL25 Odds and Ends INL25 The Icon Newsletter - No. 25 - November 1,1987 INL25 Odds and Ends INL25 Subscriptions to the Newsletter INL25 Use of Our Mailing List INL25 Contacting the Icon Project INL25 Reporting Problems INL25 Implementation News INL25 An Extension Interpreter for Icon INL25 From Our Mail INL25 Icon BBS at Arizona INL25 Ordering Icon Books Outside the United States INL25 A Brief History of Icon INL25 The Icon Project (continued) INL25 Language Corner INL25 Failure INL25 Programming Corner INL25 Pattern Words INL25 Environment Variables INL25 Benchmarking Icon Expressions INL25 Queens Never Die INL25 Icon Electronic Clip-Art "Contest" INL25 New Documents INL25 IPD18, Benchmarking Icon Expressions INL25 IPD41, Tabulating Expression Activity in Icon INL25 Upcoming in the Newsletter INL25 Ordering Icon Material INL25 What's Available INL25 Program Material INL25 Icon for Personal Computers INL25 Icon for Porting: INL25 Documentation INL25 Order Form INL26 The Icon Newsletter - No. 26 - March 1,1988 INL26 Odds and Ends INL26 The Icon Extension Interpreter INL26 Icon Clip-Art Contest INL26 Implementation News INL26 Version 7 of Icon is Released INL26 Update Policy INL26 Status of the Icon Program Library INL26 Icon for Prime Computers INL26 ICEBOL3 in April INL26 Revision of the Icon Language Book INL26 Feedback INL26 From Our Mail INL26 In Support of Icon INL26 A Brief History of Icon - Continued INL26 Language Corner INL26 The Null Value INL26 Programming Corner INL26 Timing Expressions INL26 Storage Allocation INL26 Clip-Art Credits INL26 Ordering Icon Material INL26 What's Available INL26 Program Material INL26 Order Form INL27 The Icon Newsletter - No. 27 - June 11,1988 INL27 Logo! INL27 New Icon Implementations INL27 Commercial Support for Icon? INL27 ICEBOL3 INL27 A Brief History of Icon - Concluded INL27 From Our Mail INL27 Bugs INL27 Leap-Year Woes INL27 String-Allocation "Botch" INL27 Language Corner INL27 Failure and Errors INL27 Inside Icon INL27 Clip-Art Credits INL27 Ordering Icon Material INL27 What's Available INL27 Program Material INL27 Order Form INL28 The Icon Newsletter - No. 28 - October 15,1988 INL28 For New Readers INL28 Odds and Ends INL28 Correction INL28 We're Flattered INL28 Icon Workshop INL28 Icon "Clip Art" INL28 Implementation News INL28 MS-DOS Icon for 386 PCs INL28 MS-DOS Icon under Turbo C INL28 XENIX V/386 Icon INL28 Icon for the IBM 370 Architecture INL28 Amiga Icon INL28 Implementation Updates INL28 From Our Mail INL28 A Contribution from Users INL28 Inside Icon INL28 Bugs INL28 Icon Benchmarks INL28 Documents Related to Icon INL28 Quick Reference Sheets for Icon INL28 Clip Art Credits INL28 Quick Reference Sheets for Icon INL28 Icon Programming Language Reference Sheet INL28 Ordering Icon Material INL28 Order Form INL29 The Icon Newsletter - No. 29 - February 14,1989 INL29 Implementation News INL29 Icon for OS/2 INL29 Implementation Updates INL29 Letter from an "Old Icon Hand" INL29 A Contribution from Users (cont'd) INL29 Run-Time Record Definition INL29 From Our Mail INL29 Programming Corner INL29 Table Keys INL29 Unique Values in a List INL29 Data Backtracking INL29 Demography INL29 What's in the Works INL29 Faculty Positions INL29 ICEBOL4 in October INL29 Art Credits INL29 Ordering Icon Material INL29 What's Available INL29 Program Material INL29 Documentation INL29 Order Form INL30 The Icon Newsletter - No. 30 - June 4,1989 INL30 Credit Card Orders INL30 Icon Program Library INL30 Implementation News INL30 Version 7.5 INL30 Communicating with the Icon Project INL30 Getting Material Electronically INL30 Network File Transfer INL30 Electronic Bulletin Board INL30 Electronic Mail INL30 Electronic Newsgroup INL30 From Our Mail INL30 The New Features INL30 Using Object Icon INL30 Programming Corner INL30 Two-Way Tables INL30 The ProIcon Group Announces First Language Release INL30 Graphics Credits INL30 Ordering Icon Material INL31 The Icon Newsletter - No. 31 - September 15,1989 INL31 Price Increases INL31 Implementation News INL31 Icon for the IBM 370 INL31 Other Implementation News INL31 Source Updates for MS-DOS INL31 A Word of Thanks INL31 Geographical Distribution of Newsletter Subscriptions INL31 Improving the Performance of Sets and Tables in Icon INL31 Introduction INL31 Algorithm Overview INL31 Hashing INL31 Segment Handling INL31 Changes to Operations INL31 Reorganization and Element Generation INL31 Performance Measurements INL31 Conclusions INL31 Icon Benchmarks INL31 Benchmarks for Version 7.5 of Icon INL31 Icon Version Numbering INL31 Graphic Credit INL31 Programming Corner INL31 ProIcon Licenses INL31 Ordering Icon Material INL32 The Icon Newsletter - No. 32 - January 15,1990 INL32 Address Change INL32 From Our Mail INL32 ICEBOL4 INL32 Object-Oriented Icon INL32 Motivation INL32 Classes INL32 Objects INL32 Object Invocation INL32 Inheritance INL32 Multiple Inheritance INL32 Invoking Superclass Operations INL32 INL32 Public Fields INL32 Miscellany INL32 Running Idol INL32 Getting a Copy INL32 Bugs INL32 Language Corner INL32 Returning from Procedures INL32 Generators INL32 Graphic Credits INL32 Programming Corner INL32 Correction INL32 Cset Operations INL32 Black Holes INL32 Records INL32 Idiomatic Icon INL32 Trivia Corner INL32 Ordering Icon Material INL33 The Icon Newsletter - No. 33 - May 15,1990 INL33 Version 8 of Icon is Here! INL33 New Language Features INL33 Implementation Changes INL33 Memory Monitoring INL33 Available Implementations INL33 The Icon Program Library INL33 Thank You! INL33 Books, Books INL33 Second Edition of the Icon Language Book INL33 Another Icon Book INL33 Newsletter Change - Important INL33 From Our Mail INL33 Icon Documentation INL33 Getting Icon Material By FTP INL33 SNOBOL4 INL33 A Compiler for Icon INL33 Overview INL33 Compiler Organization INL33 Programming Corner INL33 Trivia INL33 Scope INL33 Graphic Credits INL33 Ordering Icon Material INL34 The Icon Newsletter - No. 34 - October 15,1990 INL34 Version 8 of Icon INL34 Corrections to the Second Edition of the Icon Book INL34 Newsletters INL34 Book Prices INL34 ICEBOL5 INL34 Second Icon Workshop INL34 ProIcon Version 2.0 INL34 Update on the Icon Optimizing Compiler INL34 The Icon Program Library INL34 Subscribing to Library Updates INL34 Contributions to the Icon Program Library INL34 Example Library Program INL34 Icon Program Library (continued) INL34 FTP Access to Icon Executable Files INL34 From Our Mail INL34 An Oral History of Icon INL34 An Icon Programming Environment INL34 Bug in Version 8 of Icon INL34 Ordering Icon Material INL35 The Icon Newsletter - No. 35 - March 1,1991 INL35 Newsletters INL35 The Icon Program Library INL35 Icon in Your Pocket INL35 Bug in Version 8 of MS-DOS Icon INL35 Update on the Icon Optimizing Compiler INL35 New Company Formed to Provide Commercial Support for Icon INL35 ICEBOL5 INL35 ProIcon Version 2.0 INL35 Programming Corner INL35 Syntax INL35 A Prime Number Generator INL35 From Our Mail INL35 SNOBOL4 Corner INL35 The End of an Era? INL35 Ordering Icon Material INL36 The Icon Newsletter - No. 36 - July 1,1991 INL36 For New Readers INL36 The Icon Compiler INL36 Advantages of the Compiler INL36 Disadvantages of the Compiler INL36 Using the Icon Compiler INL36 Getting the Icon Compiler INL36 Looking Ahead INL36 Icon News Group INL36 The Icon Analyst INL36 X-Window Facilities for Icon INL36 Getting Icon Material Via FTP INL36 ICEBOL5 INL36 Icon from ISI INL36 ISIcon Does Modules INL36 Programming Corner INL36 From Our Mail INL36 SNOBOL4 Corner INL36 Ordering Icon Material INL37 The Icon Newsletter - No. 37 - November 1,1991 INL37 For New Readers INL37 What's Going on with Icon? INL37 Icon Compiler Documentation INL37 Geographical Distribution of Subscriptions INL37 Executable Files for the Interpreter INL37 ISI Icon Release INL37 ProIcon 2.0 Upgrade INL37 Smaller Icode Files for UNIX INL37 Programming Corner INL37 From Our Mail INL37 Programming Language Archives INL37 Faculty Positions INL37 Thanks from the Editors INL37 Icon Seminar INL37 Icon Program Library Update INL37 Graphic Credits INL37 Tweening INL37 A Puzzle INL37 Public-Domain 386 MS-DOS Icon INL37 Ordering Icon Material INL38 The Icon Newsletter - No. 38 - March 1,1992 INL38 Newsletter Subscriptions INL38 Version 8.5 of Icon INL38 New Macintosh Icon INL38 More on UNIX Icode Files INL38 ICEBOL6 INL38 Icon Applications INL38 RBBS at the Icon Project INL38 A Puzzle INL38 Producing the Newsletter INL38 ISIcon Release 1.0 INL38 Icon Program Library Updates INL38 ProIcon Spring Sale INL38 Graphic Credits INL38 From Our Mail INL38 Ordering Icon Material INL38 Newsletter Subscription Renewal Form INL39 The Icon Newsletter - No. 39 - August 15,1992 INL39 Feedback INL39 New Implementations INL39 The Icon Optimizing Compiler INL39 Changes in Icon Distribution INL39 Icon Via FTP INL39 An Icon Debugger INL39 Icon Auto-Stereogram INL39 From Our Mail INL39 ICEBOL6 INL39 Graphic Credits INL39 Icon on CD-ROM INL39 Icon Class Projects INL39 Ordering Icon Material INL40 The Icon Newsletter - No. 40 - December 21,1992 INL40 Reflections INL40 New Implementations INL40 HOPL-II INL40 Icon Graphics INL40 TEXT Technology INL40 ICEBOL6 INL40 Acknowledgments INL40 Icon Class Projects INL40 Programming Corner INL40 Icon on the NEC 9801 INL40 Ordering Icon Material INL41 The Icon Newsletter - No. 41 - March 15,1993 INL41 New Icon Program Library INL41 Supporting the Icon Project INL41 In the Works INL41 Moving? INL41 FTP Files by Electronic Mail INL41 ProIcon Price Reduction INL41 Noun Stem Generation of Finnish INL41 Programming Corner INL41 Third Icon Workshop INL41 Ordering Icon Material INL42 The Icon Newsletter - No. 42 - July 15,1993 INL42 Version 8.10 of Icon INL42 Exploring Natural Language Syntax INL42 Programming Corner INL42 Supporting the Icon Project INL42 Icon Analyst Back Issues INL42 From Our Mail INL42 Ordering Icon Material INL43 The Icon Newsletter - No. 43 - November 15,1993 INL43 Implementation News INL43 An Icon-Based Parser Generator INL43 Icon for Humanists Out of Print INL43 Holiday Closing INL43 From Our Mail INL43 Icon in the Classroom INL43 Graphics Credits INL43 Ordering Icon Material INL44 The Icon Newsletter - No. 44 - March 15, 1994 INL44 ProIcon Now in Public Domain INL44 Version 9 of Icon INL44 SNOBOL4 Corner INL44 Graphics Programming Book INL44 Thank You INL44 Uploading Files INL44 Language Archives INL44 Icon Mugs INL44 From Our Mail INL44 Frequently Asked Questions INL44 Ordering Icon Material INL45 The Icon Newsletter - No. 45 - August 15, 1994 INL45 Version 9 of Icon INL45 Update Subscriptions INL45 The Icon Analyst INL45 BYTE Article on Icon INL45 Icon RBBS INL45 FTP Files by Electronic Mail INL45 Graphics Credits INL45 Stereograms INL45 Language Archives INL45 Access to CBI Archives INL45 IClip INL45 Phasing Out 5.25" Floppies INL45 From Our Mail INL45 Ordering Icon Material INL46 The Icon Newsletter - No. 46 - December 29, 1994 INL46 Version 9 of Icon INL46 ProIcon Manual Reprint INL46 Icon RBBS Discontinued INL46 Getting Books About Icon INL46 Vidgets INL46 Graphics Book INL46 Icon for Software Engineering INL46 Credits INL46 From Our Mail INL46 Ordering Icon Material INL47 The Icon Newsletter - No. 47 - June 15, 1995 INL47 New Area Code INL47 Status Report INL47 Icon Analyst INL47 Diskette Distribution INL47 Icon Program Library INL47 Contributing Articles INL47 Graphics Programming Course INL48 The Icon Newsletter - No. 48 - November 28, 1995 INL48 Icon Documentation on the Web INL48 Icon Newsletter Subscriptions INL48 Status Report INL48 News and Notes INL48 Technical Support INL48 Thank you INL48 View from the Icon Project INL49 The Icon Newsletter - No. 49 - April 1, 1996 INL49 New Editor INL49 Icon Program Library INL49 Icon on the Web INL49 Programming Languages Book INL49 Graphics Programming Course INL50 The Icon Newsletter - No. 50 - August 1, 1996 INL50 Third Edition of the Icon Book INL50 New Implementations of Icon INL50 Icon for Chinese Computing INL50 Teaching Icon INL50 Book Sale! INL50 Web Links INL50 From Our Mail INL51 The Icon Newsletter - No. 51 - December 1, 1996 INL51 Third Edition of the Icon Book INL51 Graphics Programming Book INL51 Version 9.3 of Icon INL51 Version 9.3 of the Program Library INL51 New MS-DOS Implementation INL51 Icon in Java INL51 Teaching Icon INL51 Web Links INL51 Chicon INL52 The Icon Newsletter - No. 52 - April 1, 1997 INL52 Mail-Order Program Material INL52 Teaching Icon INL52 Web Links INL52 Native Interface for Windows INL52 Programming Language Handbook INL52 From Our Mail INL52 Knowledge Explorer INL53 The Icon Newsletter - No. 53 - August 1, 1997 INL53 Icon in Java INL53 Icon Documentation in Japanese INL53 Handbook of Programming Languages INL53 Icon Analyst Promotional Offer INL53 Program Visualization Course INL54 The Icon Newsletter - No. 54 - December 1, 1997 INL54 The Curse of DOS INL54 New Icon Program Library Release INL54 Status of the Graphics Book INL54 Unicon INL54 Chinese Icon Book INL54 From Our Mail INL54 Updated Icon Web Site INL54 Icon Mirror Site INL54 Using Icon to Spin the Web INL54 An Introduction to Wi INL55 The Icon Newsletter - No. 55 - April 1, 1998 INL55 Book Sale INL55 Version 9.3.1 of Icon INL55 Windows Icon INL55 Graphics Programming Book INL55 Help Wanted INL55 Icon Documentation in Japanese INL55 OS/2 Icon 9.3 with Graphics INL55 Handbook of Programming Languages .. INL56 The Icon Newsletter - No. 56 - August 1, 1998 INL56 Jcon INL56 Graphics Programming Book INL56 SL5 Re-Implementation Project INL56 Macintosh Icon Implementation INL56 Work in Progress INL56 Thanks to Our Publisher INL56 From Our Mail INL57 The Icon Newsletter - No. 57 - December 1, 1998 INL57 Version 2 of Jcon INL57 More Icon Books Coming INL57 Database Connectivity INL57 Whither Idol? INL57 Chinese Book on Icon INL57 Icon Club at Yahoo INL57 On-Line Icon Book INL57 Icon CD-ROM Sale INL58 The Icon Newsletter - No. 58 - June 1, 1999 INL58 Newsletter INL58 Early Icon Analysts On-Line INL58 News from Clint Jeffery INL58 Version 9.3.2 of Icon INL58 Icon for BeOS INL58 Graphics Programming Course INL59 The Icon Newsletter - No. 59 - December 1, 1999 INL59 Icon Newsletter to Cease Publication INL59 More Early Icon Analysts On-Line INL59 Version 9.3.2 of Icon Released INL59 Jcon News INL59 New DOS Version of Icon INL59 Minicon INL60 The Icon Newsletter - No. 60 - June 1, 2000 INL60 Sixty and Out INL60 USGS Map Viewer INL60 Back Issues of the Icon Newsletter INL60 Messaging Language Extension INL60 Icon Program Library Again, these can all be found at: https://www.cs.arizona.edu/icon/inl/inl.htm .. only:: html .. -------- :ref:`genindex` | Previous: :doc:`performance` | Next: :doc:`ucl` |