[comp.lang.apl] Syntax for extended matrix operatio

jaxon@uicsrd.csrd.uiuc.edu (11/30/89)

Generally I'd agree that hooking into an external function is an adequate
way to extend APL systems.  It is certainly the best approach when you're
still exploring the design space.  But there are at least four good reasons
to consider language extension in the direction Andrew suggests.

1) APL's traditional claim to the Linear Algebra turf would be substantially
   strengthened.  There are strong competitors, and the applications domain
   seems to be expanding.

2) Once adopted into the language these features are more readily standardized.

3) Once the interpreter or compiler knows the intended semantics of a function
   the implementation may be able to optimize some of the call sites.  In
   particular it may recognize that the function can be used in parallel.

4) By nature the extensions must cooperate with some other language primitives.
   As I understand the problem,  the dominoe functions could benefit greatly
   from information about the structure and other properties of the linear
   system they are solving. This information is too costly to recompute, so
   traditional codes typically generate a system with some special properties,
   maintain those properties through whatever transformations they make, then
   use a linear solver tuned to this special case (or requiring that case for
   correctness!)

   
In APLB, we carried a hash value around for arrays that had been used with
any of the comparison algorithms (membership, match, equal, iota, ...).  It
had to be invalidated by any in-place modification of the array, but was
otherwise carried from some source to an unknown destination without change.
I suspect the decomposition schemes could follow this example, but I'm not
(yet) competent enough to suggest the design.