gus@Shasta.UUCP (02/06/87)
Sorry about the cross-postings, but mayby someone can answer any of my
questions...
Several months ago, Keith Nemitz posted a port of Ralph and Madge Griswold's
ICON programming language on net.sources.mac. This included MPW binaries and
compare files which showed the changes he made to the source code. The thing
actually works, and I suggest that if you are initerested in truly unique
programming models, that you take a look at this. The manual is published by
Prentice Hall and describes the language quite well.
Now:
1) What is Keith Nemitz's net address? I seem to have completely lost it.
2) Does anyone have the complete MPW source to ICON, or at least the version
of the UNIX source from which the Mac version was derived. (It is not
the version which came with the 4.2BSD contributed library. The latter
does not have a linked list module in the translator, for one thing, and
does not seem to have MS-DOS #IFDEFs.
3) The book alludes to a second book: The Implementation of the ICON
Programming Language, which I would guess would have a lot of interesting
internal documentation. There are LOTS of interesting algorithms in this
thing!
4) Does anyone have any medium to large applications written in ICON which
really take advantage of the unique features of the language? I have TONS
of 1 page or less examples, but nothing substantial.
5) Here is the 8 queens problem in ICON as shown on page 153 of the manual.
procedure main()
every write(q(1),q(2),q(3),q(4),q(5),q(6),q(7),q(8))
end
procedure q(c)
suspend place(1 to 8,c) # Look for a row
end
procedure place(r,c)
static up,down,row
initial {
up:= list(15,0)
down := list(15,0)
row := list(8,0)
}
if row[r] = down[r+c-1] = up[8+r-c] = 0
then suspend row[r] <- down[r+c-1] <-
up[8+r-c] <- r # Place if free
end
can anyone figure out how to create a general construct which itterates from
m to n, backtracking when necessary, the way the main() procedure does,
without explicitly writing q(1),q(2),q(3)...q(8)?
Gus Fernandez