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
