Minimal set of operators for APL/J like language

Is there any work proposing a minimal set of orthogonal operators to make an APL like language?

APL, J, et. al seem to mix what in other languages most people (or at least I) would call core language vs. library functions. I'm interested in the core language. In particular, it's not clear to me which are the adverbs required to operate on different kinds of array slices.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Smart dataflow key to APL/J style languages

I hope that you find this somewhat tangential response useful:

The power of Array languages like APL/J/Nial/etc. is not in the operators but in the special way that they are used. It seems at first glance to be ordinary functional composition, easily imitated by a small library in your favorite functional language. Then you look at typical APL/J/Nial code, especially the popular idioms and you realize that the vast majority of data computed by strict functional application does not get used.

The array programming style is to "multiply" arrays together to create temporary arrays of higher dimensions from which "slices" are extracted which are then used to build more huge temporary arrays, etc. Kind of systolic. Very powerful, but potentially ruinously expensive. In order to support this style you need an implementation which can avoid creating the data which will never be used. Ordinary lazy evaluation doesn't handle this well either.

Ideally you want a compiler to analyze each of those elegant expressions and rewrite it using sparse arrays, dataflow and other tricks. My old colleague Terry Miller was working on that "back in the day". Googling "lazy apl" brings up more recent material. Alas, his work and the more recent material I'm finding requires access to the ACM and IEEE libraries to which I have no access (despite being a member of both organizations). I'll be interested if other readers can point to accessible research reports in this area.

An APL Machine

Thanks! That's the kind of

Thanks! That's the kind of stuff I was looking for.