Icon [http://www.cs.arizona.edu/icon/index.htm] is a programming language with a long and rich history, although it is even more obscure (''Since when is Tcl obscure? -[FW]'') than tcl. There are several points of similarity between the two languages, along with many more differences. * Interpreted with a byte-code compiler * Portable across a range of different systems * Built-in memory allocation and garbage collection * Portable graphical tool kit * High degree of introspection * Rich built-in data structures (character sets, lists, records, sets, strings, tables) * Invocation of procedures based on a dynamic string value * Two memory scopes, global and local * Strongly typed values, but untyped variables * Primitives for determining if a variable has a value * No "go to" statement The data structures are implemented in a way that allows a substantial amount of polymophism. The syntax for interating through all the values in a set, or all the elements in a list, or even all the characters in a string is pretty much the same. Some of the differences are equally significant. * The syntax looks more like C than tcl * Many, many operators * Procedures can have local variables that are declared '''static''' instead of '''local''' so that they retain their values between invocations (for Tcl, see [Static variables]) * No dynamic creation of procedures * No namespaces * Pattern matching is a normal extension of expression evaluation * Backtracking built into the language * Expressions can yield 0 or more values (not necessarily all at once) * Generators and co-expressions * Characters set limited to 8-bit characters * Separate compilation of procedures (not a just-in-time compiler) ''[escargo] 10/28-29/2002'' ---- [Category Language]