Re: LOOP

Liste des GroupesRevenir à cl forth 
Sujet : Re: LOOP
De : do-not-use (at) *nospam* swldwa.uk (Gerry Jackson)
Groupes : comp.lang.forth
Date : 07. Jul 2025, 07:54:19
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <104fquq$2p8dc$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11
User-Agent : Mozilla Thunderbird
On 03/07/2025 20:33, minforth wrote:
On Sat, 28 Jun 2025 21:01:48 +0000, Anton Ertl wrote:
 
sean@conman.org writes:
 What is the difference between FOR/NEXT and DO/LOOP?  Don't they do the
same thing?
>
FOR ... NEXT on one system does not do the same thing as FOR ... NEXT
on some other systems, and they all behave different from DO ... LOOP.
>
 Correct. Here are variants with iterators that even run on gforth 0.7.9:
 \ ====== <n> FOR# .. #TIMES
==================================================
\ original: machine code
\ demo variant: slow Forth
 : _ITERATE \ end xt
     swap
     BEGIN dup 0>
     WHILE over execute 1-
     REPEAT 2drop ;
 : FOR# postpone [: ; IMMEDIATE
 : #TIMES postpone ;] postpone _iterate ; IMMEDIATE
 \ ====== <n> FOR .. N M .. NEXT
==============================================
I've found looping quotations useful but I like to include the quotation inside the loop e.g. (without the syntactic sugar and moving the iterator inside the quotation):
: downcount begin [: dup 0> if dup . 1- then ;] over 0> while execute repeat 2drop ;
10 downcount \ displays 10 9 8 7 6 5 4 3 2 1  ok
Advantages are:
1) The xt is not passed to the quotation and so doesn't get in the way. 2) The xt is loaded as a literal when the quotation exits.
3) The quotation can exit the loop early by EXITing with 0 on the stack.
--
Gerry

Date Sujet#  Auteur
23 Jun 25 * OOS approach revisited23LIT
24 Jun 25 `* Re: OOS approach revisited22dxf
26 Jun 25  `* Re: OOS approach revisited21LIT
27 Jun 25   +* Re: OOS approach revisited19minforth
27 Jun 25   i+* Re: OOS approach revisited14dxf
27 Jun 25   ii`* Re: OOS approach revisited13minforth
27 Jun 25   ii +* Re: OOS approach revisited3LIT
27 Jun 25   ii i`* Re: OOS approach revisited2minforth
28 Jun 25   ii i `- Re: OOS approach revisited1Stephen Pelc
28 Jun 25   ii `* LOOP (was: OOS approach revisited)9Anton Ertl
28 Jun 25   ii  +* Re: LOOP7dxf
28 Jun 25   ii  i`* Re: LOOP6sean
28 Jun 25   ii  i +* Re: LOOP4Anton Ertl
3 Jul 25   ii  i i`* Re: LOOP3minforth
7 Jul 25   ii  i i `* Re: LOOP2Gerry Jackson
7 Jul 25   ii  i i  `- Re: LOOP1minforth
29 Jun 25   ii  i `- Re: LOOP1dxf
28 Jun 25   ii  `- Re: LOOP (was: OOS approach revisited)1Anton Ertl
28 Jun 25   i+* DO..LOOP and stack shuffling (was: OOS approach revisited)3Anton Ertl
3 Jul 25   ii+- Re: DO..LOOP and stack shuffling1dxf
3 Jul 25   ii`- Re: DO..LOOP and stack shuffling1Anton Ertl
30 Jun 25   i`- Re: OOS approach revisited1Hans Bezemer
27 Jun 25   `- Re: OOS approach revisited1dxf

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal