> You are correct that SHARP APL did not have > prefix agreement, nor did it support tolerant > frame building. I'm remain unconvinced that either of > these are good things to have at a primitive level. > Like negative indexing, it turns domain errors into > results, and there's no way to turn it off. > I'd prefer to introduce conjunctions or > adverbs to enable that behavior when I want it.
That being the case, then I suppose the tolerant frame building in the monad >y in mainframe SHARP APL was specified and implemented over your objections? ----- Original Message ----- From: Robert Bernecky <[EMAIL PROTECTED]> Date: Friday, December 21, 2007 14:04 Subject: Re: Subject: Re: [Jchat] J readability To: Chat forum <[email protected]> > > On Fri, 2007-12-21 at 13:06 -0800, Roger Hui wrote: > > Bob Bernecky wrote: > > > > > ... and it WAS one of the > > > primary reasons Ken and I worked to develop a proper > > > conjunction to supplant axis brackets, that I introduced into > > > SHARP APL as the rank conjunction. > > > > A few relevant facts: > > > > - The rank operator was invented by Arthur Whitney in 1982, > > who both recognized the problem with the axis operator and > > invented its superior replacement. > > See http://keiapl.org/rhui/remember.htm#22 > > You are correct, Roger. Ken and I tried a number of approaches > over a year or so, but were never satisfied with any of them, because > they were nightmares to look at. For example, we thought about > providing something along the lines of dyadic transpose > left arguments for the items specifying treatment of left > and right arguments of dyads, and right arguments of monads. > This led us to "X foo AXIS (monadic;dyadicleft;monadicright) Y" > and and the like. I did not like the idea of implementing > anything like this, nor did I like the idea of having to > write APL that used it. > > I believe we were at the APL conference > in Heidelberg when Arthur came up with the key idea of > defining operations on leading axes, rather than on trailing axes, > and offering the idea that a single number (rank) could then > be used in lieu of shape vector selection. I recall > its simplicity as being a breath of fresh air. > > I implemented the rank conjunction over a weekend, just before > a SHARP APL release cutoff. The restriction to primitive function > operands was intended as a short-term nonce error, and > was not the intended design. By this time, the SHARP APL > architecture was showing its age, and re-engineering > it was a non-trivial task that could not be performed > over a weekend. Or a month, for that matter. > The obvious extensions to non-primitive > functions, as desirable as they are, were considered > "important, but not strategic" by the new management. > Remember the time-frame when this was happening... > > I suspect the SAX interpreter, of more recent > vintage than the mainframe one, > did have the composition capability. > > You are correct that SHARP APL did not have > prefix agreement, nor did it support tolerant > frame building. I'm remain unconvinced that either of > these are good things to have at a primitive level. > Like negative indexing, it turns domain errors into > results, and there's no way to turn it off. > I'd prefer to introduce conjunctions or > adverbs to enable that behavior when I want it. > > I'm not sure offhand what J does with rank when a > frame shape contains a zero and a non-uniform function > is being applied. I should have signalled nonce > error... > > Bob > > > - The rank operator in SHARP APL worked only on > > primitive function arguments. e.g. you can not say +/ > rank 1 > > > > - The rank operator in SHARP APL only had "scalar agreement". > > i.e. The two arguments must have the same shape, or > > one argument must be a single cell. The rank operator > > in J has prefix agreement (also suggested by Whitney). > > See http://www.jsoftware.com/jwiki/Essays/Rank > > > > - The rank operator in SHARP APL did not have > > tolerant frame building. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
