[comp.lang.misc] ICON Programming Language questions

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