
The Implementation of the Icon Programming Language (1986) - noch
http://www2.cs.arizona.edu/icon/ibsale.htm
======
open-source-ux
There is a successor to the Icon language called Unicon. Like Icon, its
strength lies in text processing. It incorporates all of Icon's features while
adding object-oriented capabilities. It's in active development but completely
off the radar of the main programming scene.

The main website could do with a facelift.

[https://unicon.sourceforge.io/](https://unicon.sourceforge.io/)

It's a shame these languages aren't studied more because they have some unique
ideas that we could all learn from.

------
dwheeler
Another book in this genre is "Smalltalk-80: the language and its
implementation". "Structure and Interpretation of Computer Programs" had a lot
of discussion about language implementation too.

~~~
kabdib
Smalltalk-80: Bits of History, Words of Advice is one of my favorite books on
language implementation. It's dated (the machines targeted were things like
8Mhz 68000 boxes) but details and pragmatics of bootstrapping your way into a
working system from a tape dump are a fun read.

~~~
MarkMMullin
Especially the cartoon captioned something like "2+2=3.9erstėsdgdfg - the
system is 99% working" \- both funny and accurate, after a fashion :-) Too bad
all we got for the MVC book was "The black art of MVC programming" :-(

~~~
kabdib
"2+3=(massive system crash)"

[Examines core dump] "Hmmm, might have been okay..."

The cartoons are funny and have never gone out of style. I still refer cow-
orkers to them and get laughs.

------
patrickg_zill
Fascinating language, very interesting to see the nice way that it progresses
as long as it "succeeds" e.g. via Wikipedia:

"In addition, the < operator returns its second argument if it succeeds,
allowing things like if a < b < c, a common type of comparison that in most
languages must be written as a conjunction of two inequalities like if a < b
&& b < c"

~~~
textmode
What would a < b < c look like in snobol/spitbol, precursor to Icon.

Maybe something like

    
    
        lt(a,b) lt(b,c) ...
       end
    

where ... is optional rest of statement that only gets executed if a < b < c.

Or ... might be a statement on a new line

    
    
        lt(a,b) lt(b,c) :s(d)f(end)
       d ...
       end

------
cryptonector
Icon is a great little language. The old Icon compiler used CPS and generated
C w/ no C extensions.

------
taybin
I have this book. I read it while working on my senior project, which was
adding the Actor concurrency model to Icon. A pretty easy read. The Icon
language was so innovative. It was my secret weapon in college.

