From 85f3767e1e834ea04eda5d1a42d6b9a764608985 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sun, 5 Nov 2023 00:30:34 -0400 Subject: [PATCH] refactor iterator definitions to define a "blank" iterator, which is then modified by subsequent definitions. --- dialer.com | Bin 37054 -> 37054 bytes dialtest.com | Bin 24022 -> 24242 bytes iter.jrt | 62 ++++++++++++++++++++++++++++++--------------------- swine.com | Bin 9657 -> 9657 bytes zipmin.com | Bin 15929 -> 15949 bytes zipoff.com | Bin 20954 -> 21174 bytes zipoff.jrt | 3 ++- zipstub.seg | Bin 4732 -> 4732 bytes 8 files changed, 39 insertions(+), 26 deletions(-) diff --git a/dialer.com b/dialer.com index de3c123800dadfd20e117064aea9408911567635..ebef9b360f6ef8ea52ba195302b8b3bc49cd229f 100755 GIT binary patch delta 2129 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 delta 7973 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 N_g3lr @@ -134,6 +135,9 @@ nexttop :push >next : iterate 0 nextpeek @ execute ; : cancel 0 nextpeek cell + @ execute ; +: finished ( -- 0 ) cancel 0 ; +: finish? ( f -- f ) if 1 else finished then ; + : EACH_ r ; { ( Because we dereference pointers on the return stack, we must run this @@ -145,43 +149,49 @@ nexttop :push >next :timm each t, EACH_ patchpt >i ; : CONTINUE t, GOTO_ i cell - w>t ; :timm continue CONTINUE ; - :timm next CONTINUE i swap w>t w>t ; - :timm >iter next ; } + :timm next CONTINUE t t' 1-iterdrop w>t ; } -: finished ( -- 0 ) cancel 0 ; -: finish? ( f -- f ) if 1 else finished then ; +{ : defiter CREATE blankiter, DOES} >next ; +{ : :iter CREATE blankiter, startcolon DOES} + >r r@ [ 2 cells lit ] + execute next ; -( n ) ' finished ( c ) :noname nextdrop cancel ; iter, : >cancel >iter ; +{ : iter! ( val off -- ) cells latest entry>tcp + !t ; + : next! 2 iter! ; : cancel! 3 iter! ; + : :next target next! startcolon ; : :cancel target cancel! startcolon ; } + +defiter >cancel +:cancel nextdrop cancel ; { : break ' >cancel , ['] continue ; immediate :timm break t, >cancel CONTINUE ; } -( n ) ' 0 ( c ) ' nextdrop iter, -: nothing >iter ; +defiter nothing +' nextdrop cancel! -: 1cancel idrop nextdrop ; +defiter >single-done +:iter single >i ; +:next nextdrop 1 >single-done ; -( n ) ' finished ( c ) ' 1cancel iter, -( n ) :noname nextdrop 1 >iter ; ( c ) ' 1cancel iter, -: single >i >iter ; +:iter times ( n -- ) >i ; +:next i finish? ; -( n ) :noname i finish? ; ( c ) ' 1cancel iter, -: times ( n -- ) >i >iter ; - -( n ) :noname i finish? ; ( c ) ' 1cancel iter, -: links ( p -- ) dup if >i >iter else nothing then ; +defiter >links +:next i finish? ; +: links ( p -- ) dup if >i >links else nothing then ; : +for? ( n -- f ) i 1 nextpeek != finish? ; -( n ) :noname 1 +for? ; ( c ) :noname 2 iterdrop ; iter, -: for ( start lim -- ) >next 1- >i >iter ; +:iter for ( start lim -- ) >next 1- >i ; +:next 1 +for? ; +:cancel 2 iterdrop ; -( n ) :noname 2 nextpeek +for? ; ( c ) :noname 3 iterdrop ; iter, -: for+ ( start lim inc -- ) >next >next 1 nextpeek - >i >iter ; +:iter for+ ( start lim inc -- ) >next >next 1 nextpeek - >i ; +:next 2 nextpeek +for? ; +:cancel 3 iterdrop ; -( n ) :noname i b@ finish? ; ( c ) ' 1cancel iter, -: pchars ( st -- ) 1- >i >iter ; +:iter pchars ( st -- ) 1- >i ; +:next i b@ finish? ; : nth ( i -- v ) 0 each 2dup = if drop i break then 1+ next swap drop ; : count 0 each 1+ next ; @@ -228,8 +238,10 @@ nexttop :push >next rswap _suspend>args n->next 2r>next 1 ; : _cancel _resume>args n-nextdrop rdrop ; -( n ) :noname _resume>args n-next >iter ; +defiter >genstart +:next _resume>args n-next >genstart ; ( yielding from a generator has three moving parts: suspend: run immediately when the generator yields. takes care of updating diff --git a/swine.com b/swine.com index 7e1d14033e8a2c36676ddec5924c0528a21fcb0f..e60171c4417d5a9802c0aaeb12293e0dc9d1d88c 100755 GIT binary patch delta 1131 zcmYjQU1(fI6y7tFc3peV%)Mpz-t8u7a#?MJRSYc&(oisKXdl)Hr4Q|Hx)`rmX!X|M zT779)1gUJL4>H(5p>$)ZKLJ5@S+IRjM3*I$u+j&yVvwTImpqur^+iR`%x;Shb7#(( z?|kPw=ghrXxLNotYmEl5ZLL}h@C2Tie0Q$}g~DWww#i!j)7sbnj?Jhk>mXFs8&(#s zt1H%_>Kc|{0Rm{i7M7t6f8aW5dzyWP4Ty{MK!vp-A?kdBEkK^`CfF=nf`M3tjk9T{ zJr@AQI_88uZkSLDcW#N93YwiidbP9QHGW^$$Qa`=!h;!%A;n~s4^@Y^b)YxpvmBf z>X!J&fbu4|)`x0H%eoKe58$5ERoo{mV%4NwF)0HmL4-%-UHFSNU|Mz{#4L%-$tra) zC;x9j`88Q)R4piYY5g+-jF-Ucww%5oWBlVyXuEO+2>^6M`CBJaomF3Uwzi0=B2 zvR8N>d&TAY`>Gj#0ISxEeUELgsS$b1&*2ihVt-@e?nwPe0=OlM#Q3&--lo|oC1+tx z-IF8q1$%fnj~~IaP5_&dBp-Hk=MOr++w@AFcCu>99)4(3#v(l9glgVSLR_7*m%vx( zJd@C&ukWT%RdlitsYR#B=S0*zu=_MiJRExr%u+X!Hx9MTP{xxVrmm#w{I0Qj=NdcA zwaOVc!t-v4`uQ7g!&z7RJ|HX+s&`ToyYi^h4SPCWCv_@mR294s&*Ar}1{~2RHSK10 zMEI&lT3tU8;d|t*kaf`=i%0mS$K6nU?p~`#xSTG*hPTc`d@3E{c+%kwsL&}x>!iCy z!+ncRGyS^_ug-@EaW!2;UBE@IA5j~Qr?t$o5r3PoD?H|Mx5S_0nxT{4V)}7>lGaNj zcP1NfFMVBo=lP_Q?+KfKdp|&eYQ)V<7!TD?duC0=PiDqQ{@KA09~lhQ^O*|9WrV+y zy~6kJBwXf;T`h`g4Tbp9P}ux&*!CDm+Yrwv=py%AIKHRzYob#P? zzVqG7Oy{TbKjch*1#TbwwAX}uey~Q{V6Ef3+LfpM8`Q8Fz(?w+nS;~noVl?&WK3fN z?x5dRF(SB!6Jo$P2xW+{2)s7{tP(^ZtcS?u^q(_Wfe&4<-IeJ|#qAtk-Wq)iRw&`A!l3O8C^Rkb=VE6O{cmdvW z%5YZ_)y)oTA2|Qm^cvoD9JSu=dFif9#5m@JYSd0bmm0V0;3;&5J2~~kWt6IRI5~*b z5vM6aD{ih^w%6$FO{@Zw)&_Mxd46N0FKJEk>(m#i3Gqlr+s&l*BsHtN7ves=nQFimKB*x$-5%oskGQ(o&KN%< zZ-uPmZhuFNKYPLr)sODkYK&j{MY!$#Awqn^4{=S>5e=x&DNSpa`WxA?&0`xWX-pw*^<2@gE!fD8BW1F>*<=0rUP>>V}sk zo}w#k{_p(;oirmpNblD6vpqJGvm67idp_aC3o{rWTfn-Zaep0Em8>5{zpUvtIpPfJ8iSGm7$4| zU_}rO_EHZ*(nA&`gV9D0qOe64QGxYf1O-WtY8;U{>|-4$H)lppbViDBB-ps@QAjI1X}V~=5^}orc6!~pq5C$>GD@1r+3nAioG>MI zNb}01v!FADa)+|&k=tnCI9^j8>y$909H{4%2&7_IVn8BhKXMh!GliV75F24XSBOuh zT7e-li2}M1g~TrSiCgQDdceY6LrBMA80jQZ6mH3ktg>L_t_;btOHhIs*n)Tso=cQ> zPrz&|B^^kU@B)Xu5+A^8yesvOpTK*rl8$IZUbXBISFAOf=zSD;X+ z#Fusaf|hcDf&cOkjN&&oN?X3#psS?M7#KiNuI@pX6iHN-YO`~I`{_={=Atlw?eR#= z#D^yJs58eaJIBPRHX)Wn^CCm-a4tD-#cabc&*2YxrHqO1+PHGrd(8VOD2-Wu7|hTW R++4wL#FPkB}N*%YU|G2yCx|;NQGL255j084Y;GbJDU}z zC_PB@5DwKt1W5+bhg3tMJyaNoBqb444@qxnP|(Lq7-Z+BFPGmr_y0fVT<&=_G&@xO zr82)Y_Ny+-bspD_g#6kHKewk-d!tUpE=JzP7V1t%S00pKRcM3zT$!RYFBD{%@dV zZcZ>*6#B#h{4g&`yw>s(HuI<_8gB9{S{0vQ5BW8AfR(sS(M6B5Q{7%RbFt!LmERPL;54#S1Hkuwm=@Egd^p`oCZXcvMeGBhqznG1)EfHq78$+5h|)o-&y<_UdA?7qGw-)NDjc z(9UQz3E{;ud=+MaE3k%!(1zqE$Q%uu(O*b92^I|0VXnvM>&u{gn_T1=EKGMh!hn!WNf93x}vX%Qu4+_Q|=&UTB%BmV%Q^T?V2 diff --git a/zipoff.com b/zipoff.com index 1f3ff3d9e9db5ce3d04241856bd17b48f7184d93..cd13eab4cfc3cf4de7735a63bc0d94e74b3c563d 100755 GIT binary patch delta 5382 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�oT{g73jQNMiW;X@z*QoiqE&pt$DKAN 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 0 w>t ; -: FINISHCREATE ' latest ' tdict with-dict codepointer cell + @ cell + !t ; +: entry>tcp codepointer cell + @ ; +: FINISHCREATE ' latest ' tdict with-dict entry>tcp cell + !t ; : DOES} target lit ' FINISHCREATE , ' return , } ; immediate ( s" blah.jrt" loadfile doesn't work in target mode because s" writes diff --git a/zipstub.seg b/zipstub.seg index 654385a91b6f773a719e8579e5110aebc8cf09fd..d9259203f471f67c729b27b65c663f232ef3f7ba 100755 GIT binary patch delta 683 zcmYjPKWLLd9PPVQV&Q&w-xWbYVwJDp@F5DN85#r=MUmQ}IA~fwi05Rn5R88o!?#Ew zI36}2h%F9+AV{Q(n`j6bLZF*q2SK+EHWC*rdUr{S%N_Ubz4!b5-rerx?&RB$AJ^#d zHZS88UC%x_#xXmat=TPGOTVdo{Co0($?+K^<^d1!(mdm5lMXGQ42=eMC`J=MX^Y%B z&puECX>nwPzjCIehgN+>Z6_iMJ#2-&8cyVn=b(9UhM^Ek34@)=2o?(#^ zU-q>xsj+}QU6P;in>CP^Ei6-Ln~Y>)6O809w0zQzwdk>VSvEI>zFDP`%~qqtV!2Lt zW$byY@&H}4xJ&Vy+>{!tvg!wMseh4!!3#7PE*kD_|NI(lert#XLB~wUt0y9=<4*9& z>o%qPBpUB!(Kc&rLiq-%NLbPen$NW>@PW|LX!(J t2e;)&pO)0JDFug+Hur-%P8(9^$DH)uxRsis3eh)J^)9t2`ethU@;}k;ujT*% delta 675 zcmX|9L1+^}6wRL)RG2@1rYKZO46+p|J&81jRlyKYq80?|Yb4IMD6GqUYSB}3wdJXyU)b>jKMzbLUh1WnDUrL=-pb?T z(ug^a9Iwz9_$#_lqYY@GQ5j59!U<2(AK388I@X-Mp%&)b*z}nD*OdqE{FI6u9+CNiLG8XF8k2@()>4EGRB_Q