You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// reflexive/passive. Create verb that swaps. Most flags do not apply to the derived verb
23
22
Iflag=FAV(w)->flag&(VIRS2|VJTFLGOK2); flag= (FAV(w)->flag&VASGSAFE)+flag+(flag>>1); // set ASGSAFE, both inplace/irs bits from dyad; ISATOMIC immaterial, since always dyad
@@ -32,7 +30,6 @@ static B jtselfq(J jt,A w){A hs,*u;V*v;
32
30
33
31
// See if there are references to implicit locatives. Return 1 if so, 0 if not
34
32
Bjthasimploc(Jjt,Aw){Ahs,*u;V*v;
35
-
ARGCHK1(w);
36
33
if(AT(w)&NOUN+NAME)return0;
37
34
v=FAV(w);
38
35
switch(v->id){
@@ -73,7 +70,6 @@ EVERYFS(arofixaself,jtaro,jtfixa,0,VFLAGNONE) // create A block to be used in e
73
70
// AM(a) points to the recursion name-list and must be passed to all recursion levels
74
71
staticAjtfixa(Jjt,Aa,Aw){Af,g,h,wf,x,y,z=w;V*v;fauxblock(fauxself); Aaa; fauxINT(aa,fauxself,1,0); AM((A)aa)=AM(a); // place to build recursion parm - make the AK field right, and pass the AM field along
RZ(w1=ca(w)); u=AAV(w1); // make a copy of the input, point to its value
62
61
// the input is a boxed list. The last 3 values are (name pqr);(index in which abc appeared in the x,y,... or -1 if it didn't);(original sentence queue)
63
62
p=1; m=AN(w)-3; v=AAV(w); c=i0(v[m+1]); // get # items in list, and index of the matching one
// speed to validate the input, and pdt works well for a large number of short vectors - in particular it avoids the carried dependency between axes that
191
190
// Horner's Rule creates. This version keeps things in registers and has less setup time; and it is much better if there are negative indexes.
if(AR(ind)<2){RZ(z=pind(AS(w)[0],ind)); // (m}only) treat a list as a list of independent indexes. pind handles that case quickly and possibly in-place.
195
193
}elseif(AS(ind)[AR(ind)-1]==1){RZ(z=pind(AS(w)[0],IRS1(ind,0L,2L,jtravel,z))); // if rows are 1 long, pind handles that too - remove the last axis
196
194
}else{
@@ -389,7 +387,6 @@ B jtgerexact(J jt, A w){A*wv;
389
387
390
388
// u} handling. This is not inplaceable but the derived verb is
b=1==r&&1==s[f]; // special case: ,/ on last axis which has length 1: in that case, the rules say the axis disappears (because of the way ,/ works on length-1 lists)
601
596
if(2>r&&!b)RCA(w); // in all OTHER cases, result=input for ranks<2
0 commit comments