" if there is an appropriate "-3" level then apply there, else apply at maximum 
depth."

As a rule describing current behavior, this is wrong.  It suffers from a couple of undefined terms: (1) what is -3 level? (2) what is maximum depth?

If -3 level means "3 levels down from the top" (or equivalently "enclosed by 3 boxes"), it has a more serious problem: the system doesn't do that currently.

Henry Rich

On 7/29/2018 5:22 PM, 'Pascal Jasmin' via Programming wrote:

 From your wiki entry, this is the current behaviout:

$L:_3 t

┌─┬─────────────┐

│1│┌───────┬─┬─┐│

│ ││┌─┬─┬─┐│2│2││

│ │││3│1│2││ │ ││

│ ││└─┴─┴─┘│ │ ││

│ │└───────┴─┴─┘│

└─┴─────────────┘

which is quite reasonable: " if there is an appropriate "-3" level then apply there, 
else apply at maximum depth."

The behaviour to leave unchanged if "no such level exists" is useful, but perhaps a new 
primitive "L::" would be the appropriate path.

L::2 would also leave items that do not have such depth unchanged.

There doesn't seem to be a "magic reason" for negative n argument to have 
different behaviour.



On Saturday, July 28, 2018, 7:42:39 p.m. EDT, Henry Rich <[email protected]> 
wrote:





L:, especially the dyad, is so complicated already that it's not worth
changing if complex arguments are needed.

It would be pretty simple to look through your code for for L:_,
wouldn't it?  Do you have more than one occurrence?  Could you replace
the level with a positive constant or a negative constant under the new
definition?

As you well know, J has a history of making incompatible changes if they
are improvements to the language.

Henry Rich

On 7/28/2018 7:11 PM, Jose Mario Quintana wrote:
I have, at least, produced code which includes L:_1 in a context in which
it is not equivalent to &.>.

Have you considered to get what you want without potentially breaking
existing code (e.g., giving meaning to imaginary whole numbers for the
right argument of L:)?

(It seems that you wrote L" instead of L: a couple of times in the
description of your proposal.)

On Fri, Jul 27, 2018 at 3:29 PM, Henry Rich <[email protected]> wrote:

I think negative level is wrongly defined.  (u L:(-r) y)  applies u at
level ((L. y) -r), which measures from the bottom of the tree.  What I want
is a form that applies u two levels down, say, which I can't get now.  I
propose to change L: to do what I want.

Has anyone found a use for L:(-r) using the current definition?

My proposed change is described at https://code.jsoftware.com/wik
i/System/Interpreter/Requests#Change_definition_of_negative_
level_.28strawman.29

Henry Rich

---
This email has been checked for viruses by AVG.
https://www.avg.com

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
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