Buy GNU books!
|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|
: ^ ( n1 u -- n ) \ n = the uth power of u1 1 swap 0 u+do over * loop nip ; 3 2 ^ . 4 3 ^ .
U+do (from `compat/loops.fs', if your Forth system doesn't
have it) takes two numbers of the stack
( u3 u4 -- ), and then
performs the code between
times (or not at all, if
You can see the stack effect design rules at work in the stack effect of the loop start words: Since the start value of the loop is more frequently constant than the end value, the start value is passed on the top-of-stack.
You can access the counter of a counted loop with
: fac ( u -- u! ) 1 swap 1+ 1 u+do i * loop ; 5 fac . 7 fac .
There is also
+do, which expects signed numbers (important for
deciding whether to enter the loop).
You can also use increments other than 1:
: up2 ( n1 n2 -- ) +do i . 2 +loop ; 10 0 up2 : down2 ( n1 n2 -- ) -do i . 2 -loop ; 0 10 down2
Reference: 5.8.3 Counted Loops.
|webmaster donations bookstore||delorie software privacy|
|Copyright © 2003 by The Free Software Foundation||Updated Jun 2003|