The Icon programming language.

Icon is a high-level general purpose language that is targeted towards processing strings and symbolic data.

It was developed at the University of Arizona from research associated with the Snobol programming language. While Icon has it's roots in Snobol, the syntax of the language is based upon the Algol (Pascal, C, etc.) family.

Icon does not use boolean style logic expressions, but instead relies on the concept of success and failure. Expressions are evaluated with a "goal" of trying to succeed. Icon functions can generate multiple results that can be applied within an expression to try to achieve the goal of success.

For example, given the following:


 s1 := "this is a string"

 if upto('s',s1) > 5 then write("Success")
 else write("failed... :(")

The upto function has a result sequence of {3,6,14} In evaluating the "if" statement, Icon will iterate over all result sequences until they are exhausted. Thus the snippet of code above would write "Success"

While Icon started it's life in the early 70's, there were several enhancements made to the language in the 80's and early 90's of which graphics support was one of the latest. The language itself has stablized. Minor enhancements (mostly in the implementation) are still being made.

Recently a new implementation (Jcon) was created using Java's JVM as the back-end.

An Object Oriented variant (Unicon) is currently being developed.

The name Icon was adopted prior to using little graphical images to represent programs or files.

More information about Icon can be found at:

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

More information about Unicon can be found at:

http://unicon.sourceforge.net