Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!quintus!ok From: ok@quintus.UUCP (Richard A. O'Keefe) Newsgroups: comp.lang.prolog Subject: Re: Prolog as a "real" language Message-ID: <855@cresswell.quintus.UUCP> Date: 7 Apr 88 00:47:04 GMT References: <1926@ubc-cs.UUCP> <1315@hubcap.UUCP> Organization: Quintus Computer Systems, Mountain View, CA Lines: 35 In article <1315@hubcap.UUCP>, steve@hubcap.UUCP ("Steve" Stevenson) writes: > If you insist that arrays are not legitimate, then how will you > address mathematics? I have had several numerical types who say > they really like the idea of prolog, but no arrays makes it impossible > to consider "numerical logic programming." Let's pull together, folks. (1) Mathematics and numerical programming are not co-extensive. (2) If by "arrays" one means the rectangular structures found in Fortran and Pascal, bear in mind that large-scale numerical programming is to a large extent a matter of fighting around the limitations of such arrays (band matrices, triangular matrices, sparse matrix packages, generalised upper bounding, ...) (3) "Arrays" covers two things: constant-time *access* to large collections of data, and constant-time *update* of such collections. There's no reason why something like Trilogy couldn't be extended with the computational parts of APL. (4) The same absence of constant-time update is to be found in functional languages such as ML. Does this mean that it is 'impossible to consider "numerical functional programming"'? (5) It turns out that assignment to individual array elements is one of the principal reasons for there being so little potential parallelism in Fortran programs. There was a study which claimed to show that if you were prepared to build new arrays instead of copying old ones you could get 700-fold parallelism rather than 7-fold. (This is not an argument _for_ logic programming, just an argument _against_ blind faith in current practice.) Something I would like to do, if only I could find the time, is to write a linear programming routine in Prolog. I've done it before in a conventional language. The key to efficiency was the use of a particular sparse matrix representation. I believe that a couple of lists of lists of pairs will be an adequate Prolog encoding of the data structure. Would it not be more profitable for the "numerical types" to provide specific examples which they think cannot be done efficiently in Prolog or ML, rather than to refuse to consider it?