Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!mit-eddie!bacchus!husc6!panda!genrad!decvax!decwrl!labrea!Shasta!gus From: gus@Shasta.UUCP Newsgroups: comp.sys.mac Subject: ICON Language sources needed Message-ID: <1231@Shasta.STANFORD.EDU> Date: Fri, 6-Feb-87 02:06:10 EST Article-I.D.: Shasta.1231 Posted: Fri Feb 6 02:06:10 1987 Date-Received: Wed, 11-Feb-87 19:00:42 EST Organization: Stanford University Lines: 51 Keywords: ICON Programming Language 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