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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to