Newsgroups: comp.lang.apl
From: gurr@swag.0 (David Gurr)
Subject: Re: SISAL Re: Control Structures in APL (PROPOSAL 4)
In-Reply-To: bernecky@eecg.toronto.edu's message of 10 Sep 94 17:14:52 GMT
Message-ID: <GURR.94Sep12185917@swag.0>
Lines: 49
Sender: news@mr.med.ge.com
Nntp-Posting-Host: swag
Organization: GE Medical Systems, Magnetic Resonance
References: <1994Sep7.222849.10701@jarvis.cs.toronto.edu> <34njvh$e6u@overload.lbl.gov>
	<GURR.94Sep9144200@swag.0>
	<1994Sep10.131452.5695@jarvis.cs.toronto.edu>
Date: 13 Sep 1994 01:59:17 GMT

In article <1994Sep10.131452.5695@jarvis.cs.toronto.edu> bernecky@eecg.toronto.edu (Robert Bernecky) writes:

   Newsgroups: comp.lang.apl
   From: bernecky@eecg.toronto.edu (Robert Bernecky)
   Organization: University of Toronto, Computer Engineering
   Date: 10 Sep 94 17:14:52 GMT

   In article <GURR.94Sep9144200@swag.0> gurr@swag.0 (David Gurr) writes:

   >   It is a "dataflow" or sequence language which is in some sense orthogonal
   >   (in a good way) to array programming.
   >
   >No, it is programming with indefinitely long 1D arrays.
   >
   SISAL90 [coming soon to an ftp site near you] has Real Arrays, just like
   APL.

Yes.  There is a nice paper in the ?SISAL Conference Procedings?  (If you
ask, the SISAL folks will send you a copy of the whole proceddings.  Very
worthwhile for thoes concerned with improving the effiency of array oriented
languages) about optimizing multidimensional array operations using dope
vector artithmatic.

   The SISAL people thought lists of lists [i.e, you make a matrix
   from a list of lists [aka vector of vectors] were a nice and simple
   data structure. They are. What they came to realize when they started
   doing certain kinds of operations, was that the time to dereference the
   dope vectors was a killer. In something like matrix transpose, for example,
   you have to find a pointer to the proper row, then compute the address
   of the element you want, etc.

   This caused them to lose a benchmark or three against Fortran.

Thank goodness for Fortran.  C would have helped none at all. :).

   Having
   real arrays lets you do things like compute the address of element[x;y]
   directly, and step across array rows using addition only.

   Bob

I suspect that the initial decision to make arrays 1D is to make them
more similar to streams.  Has anyone seen definitions and/or uses of
multidimensional streams?

-David Gurr

