Bob, I wonder where you got your experience with tolerant frame building, sufficient experience that you grew to dislike it. It can not be with mainframe SHARP APL because it did not have it, and in any case only primitives can be used with operators so any such experience would be incomplete. It can not be with SAX because you were not even sure that non-primitive fns can be used as arguments to the rank operator. Have you been a J user in secret all these years?
----- Original Message ----- From: Robert Bernecky <[EMAIL PROTECTED]> Date: Friday, December 21, 2007 15:47 Subject: Re: Subject: Re: [Jchat] J readability To: Chat forum <[email protected]> > Not so: it seemed like a good idea at the time > we did it. I grew to dislike the tolerant > frame-building later on, after I saw it in > action for a while. > > I think I'd like it to be under the control of > a higher-order function, as the present behavior can > mask program bugs. On even-numbered days, it's OK, though. > > Bob > > On Fri, 2007-12-21 at 15:33 -0800, Roger Hui wrote: > > > 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
