Icon Program Library

_images/unicon.png

Index Unicon

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

Some of these IPL entries include multiple functions. Do not worry about bloat. The ucode linker will only include the procedures that are actually used from files with multiple procedures.

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.

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 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 errproc() is called, options() immediately returns the outcome of errproc(), without processing further arguments.

An argument of -- causes options() to stop parsing options, and leaves all subsequent command line data in the argv argument list.

The argv[1] list provided to main() will have all options and associated arguments removed from the list after the call to options().

Unlike the GNU standard, long option names are single dash, not double dash when programming with the options() procedure.

[1]argv is just an identifier name, use anything you are comfortable with, but remember that args is a built in function, so is not a recommended choice. argv is provided to main as a List of strings in the same order as given on the command line.

ximage

Unicon has image built in, but only displays a type summary for most of the aggregate structures. ximage() is a routine, by Rob Alexander, that produces a String image of x, but also includes all elements of structured data, indented to aid in visualizing nested structures.

wrap

The wrap() procedure is a very handy way of displaying long lists of built up data. Initialize with wrap() (if required following a previous use) then write(wrap(data, width)) inside loops, ending with a final write(wrap()) to finish off any buffered data. width defaults to 80 character positions. ipl/procs/wrap.icn, link wrap.

#
# ipl-wrap.icn, demonstrate short string accumulated wrap
#
link wrap

# wrap printable ASCII with a width of 16 characters per line
procedure main()
    wrap()
    every write(wrap(!&ascii[33:-1], 16))
    write(wrap())
end

examples/ipl-wrap.icn

prompt$ unicon -s ipl-wrap.icn -x
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~

strings

The strings.icn entry in the IPL encapsulates a lot of idiomatic Unicon in small functions. ipl/procs/strings.icn, 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 strings.icn, and the source code gives good hints on idiomatic Unicon.

lists

List manipulation routines. ipl/procs/lists.icn, 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:

#
# ipl-lists.icn, Demonstrate some of the lists utilities
#
link lists
procedure main()
    L := [1,2,3,4,5,4,3,2,1]
    # unadorned image
    write(limage(L))
    # list repl
    write(limage(lrepl(L[1:3], 3)))
    # list interweave
    write(limage(linterl(L, [6,7])))
    # list unique
    write(limage(lunique(L)))
end

examples/ipl-lists.icn

prompt$ unicon -s ipl-lists.icn -x
[1,2,3,4,5,4,3,2,1]
[1,2,1,2,1,2]
[1,6,2,7,3,6,4,7,5,6,4,7,3,6,2,7,1,6]
[1,2,3,4,5]

numbers

Another multiple procedure IPL entry. The numbers.icn entry in the IPL encapsulates a lot of numeric Unicon in small functions. ipl/procs/numbers.icn, 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.

#
# dtor.icn, demonstrate degrees to radians
#
link numbers

# uses decipos from numbers, align decimal within field
procedure main()
    write("Degrees Radians")
    every r := 0.0 to 360.0 by 45.0 do
        write(decipos(r, 4, 8), decipos(dtor(r), 2, 20))
end

examples/dtor.icn

prompt$ unicon -s dtor.icn -x
Degrees Radians
  0.0   0.0                 
 45.0   0.7853981633974483  
 90.0   1.570796326794897   
135.0   2.356194490192345   
180.0   3.141592653589793   
225.0   3.926990816987241   
270.0   4.71238898038469    
315.0   5.497787143782138   
360.0   6.283185307179586

Lisp

The IPL contains a small, yet fairly complete, Lisp interpreter. ipl/progs/lisp.icn.

#
# lisping.icn, Demonstrate the IPL Lisp interpreter
#
link lisp, fullimag
procedure main()
    initialize()
    preload()
    s := "(print (quote (1 2 3)))"
    every l := bstol(Map(s)) do { PRINT(result := [EVAL([l])]) }
    write("first result: ", fullimage(result))

    s := "(setq a (quote (1 2 3)))"
    every l := bstol(Map(s)) do { PRINT(result := [EVAL([l])]) }
    write("second result: ", fullimage(result))
end

examples/lisping.icn

The code above just prints a list.

Build some icode for lisping.

prompt$ unicon -s -c -DNOMAIN lisp.icn

And evaluate some Lisp

prompt$ unicon -s lisping.icn -x
(1 2 3)
NIL
first result: [[]]
(1 2 3)
second result: [["1","2","3"]]

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


Index | Previous: Performance | Next: Programs