Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!amdcad!sun!pitstop!texsun!convex!uunet!mcvax!ukc!harrier.ukc.ac.uk!eagle.ukc.ac.uk!icdoc!ivax!cdsm From: cdsm@ivax.doc.ic.ac.uk (Chris Moss) Newsgroups: comp.lang.prolog Subject: Re: IC-Prolog Message-ID: <587@gould.doc.ic.ac.uk> Date: 27 Jan 89 11:54:06 GMT References: Sender: news@doc.ic.ac.uk Reply-To: cdsm@doc.ic.ac.uk (Chris Moss) Distribution: comp Organization: Dept. of Computing, Imperial College, London, UK. Lines: 29 In article gary@milo.mcs.clarkson.edu (Gary Levin) writes: >Does anyone have access to source for IC-Prolog or any of its >descendants? What machines will it run on? The answer is probably NO. I asked Frank McCabe, the author, last year if he had the sources and he said he hadn't. So I haven't included it my list of live Prolog systems ever since. Although Imperial College doesn't appear to have a copy, it was distributed to various people and it's quite possible that some people on the net have copies stacked away on old mag tapes. Any offers? It was written in fairly standard Pascal--at the time it mainly ran on the college Cyber machines. If it'll run on them it'll run on anything! The main reason it was abandoned was the slowness and inconvenience of the pure system. For instance, to do i/o you had to construct a difference list (without even DCG's) and associate this with a channel. Multimode arithmetic is simple in comparison: sum(X,Y,Z) always gives solutions. The problem is that if it is non-deterministic you have to generate solutions in a preconceived order, and this is nearly always useless. (MicroProlog was a sort of descendent which has this feature minus the nondeterminism and is cheaply available.) The only approach I've seen which handles those issues sensibly so far is Trilogy, and that simply keeps predicates and functions pure of side effects while allowing you to code up those things in dirty "subr"s; that has its advantages. You can debug predicates knowing they are pure. It doesn't help with debugging the subr's. Arithmetic is handled via constraints. Chris Moss.