Negative rank is a convention - it means the rank is relative to the
noun rank. I'm not sure what a rank less than 0 would mean otherwise.

Thanks,

-- 
Raul

On Mon, Aug 7, 2017 at 7:15 PM, Louis de Forcrand <[email protected]> wrote:
> I see. So negative ranks are sort of placeholders, and are replaced by
> positive (effective) ranks internally during evaluation?
> Because it could just announce its rank to be negative, and not actually
> calculate the effective rank until it is really needed (a lazier effective 
> rank
> evaluation if you will):
>
>       x u”_1/ y   <->   x u”_1”_1 _ y   NB. evaluate effective rank here
> <->   x u”_1”((0>.(#$x)-1) , _) y       NB. and here
> <->   x 4 : ‘x u”((0>.(#$x)-1),(0>.(#$y)-1)) y'”((0>.(#$x)-1) , _) y
>
> instead of
>
>       x u”_1/ y NB. just here
> <->   x 4 : ‘x u”((0>.(#$x)-1),(0>.(#$y)-1)) y’/ y
>
> What I mean is that I would’ve made v=: u“r with r<0 report rank r, and if an
> operator needs to know the rank of v, then just feed it r and let it deal with
> calculating the effective rank.
>
> Of course their are probably implementation limitations which I do not know 
> of.
>
> Thanks for your explanation!
>
> Louis
>
>> On 07 Aug 2017, at 18:29, Raul Miller <[email protected]> wrote:
>>
>> The rank of +"_1 is infinite because the derived verb has to see the
>> full ranks of its arguments to figure out what rank to use for the
>> inner verb.
>>
>> In other words, -"_1 in -"_1 i.3 3 has an effective rank of 1, but in
>> -"_ i.3 it has an effective rank of 0.
>>
>> Since it can't know what rank to use until after it sees the nouns,
>> its announced rank has to be infinite.
>>
>> Thanks,
>>
>> --
>> Raul
>>
>>
>> On Mon, Aug 7, 2017 at 4:40 PM, Louis de Forcrand <[email protected]> wrote:
>>>   +"0/~ i.3
>>> 0 1 2
>>> 1 2 3
>>> 2 3 4
>>>   +"_1/~ i.3
>>> 0 2 4
>>>   +"0 b.0
>>> 0 0 0
>>>   +"_1 b.0
>>> _ _ _
>>>
>>> I understand that this is dictionary compliant:
>>>
>>> "In general, each cell of x is applied to the entire of y . Thus x u/ y is 
>>> equivalent to x u"(lu,_) y where lu is the left rank of u ."
>>>
>>>   +"_1 b.0
>>> _ _ _
>>>
>>> So u"_1/ -: u"_ _ . Wouldn’t it be better though if u"_1/ -: u"_1 _ ,
>>> or if (u”_1 b.0) -: _1 _1 _1 (or any other negative rank)?
>>> I ran into this while trying to use ,"_1/ , which I can replace by >@{@,&< ,
>>> but I still find this strange.
>>>
>>> Louis
>>>
>>> ----------------------------------------------------------------------
>>> 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