Artifact 40ce2a4fe623b420ed5e29ed49b3a6cbd2b114f5ecb3aed08c17e6914068fa51:
- Executable file
r37/lisp/csl/html/r37_0047.html
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 4555) [annotate] [blame] [check-ins using] [more...]
<A NAME=FOR> <TITLE>FOR</TITLE></A> <b><a href=r37_idx.html>INDEX</a></b><p><p> <B>FOR</B> _ _ _ _ _ _ _ _ _ _ _ _ <B>command</B><P> <P> <P> <P> The <em>for</em> command is used for iterative loops. There are many possible forms it can take. <P> <P> <P><PRE><TT> / / |STEP <number> UNTIL| |<var>:=<number>| |<number>| FOR| | : | |<action> <exprn> | / | |EACH <var> IN <list> | / where <action> ::= DO|PRODUCT|SUM|COLLECT|JOIN. </TT></PRE><P><var> can be any valid REDUCE identifier except <em>t</em> o r <em>nil</em>, <inc>, <start> and <stop> can be any expression that evaluates to a positive or negative integer. <list> must be a valid <A HREF=r37_0302.html>list</A> structure. The action taken must be one of the actions shown above, each of which is followed by a single REDUCE expression, statement or a <A HREF=r37_0038.html>group</A> (<em><<</em>...<em>>></em>) or <A HREF=r37_0041.html>block</A> ( <A HREF=r37_0040.html>begin</A>... <A HREF=r37_0044.html>end</A>) statement. <P> <P> <P> <H3> examples: </H3> <P><PRE><TT> for i := 1:10 sum i; 55 for a := -2 step 3 until 6 product a; -8 a := 3; A := 3 for iter := 4:a do write iter; m := 0; M := 0 for s := 10 step -1 until 3 do <<d := 10*s;m := m + d>>; m; 520 for each x in {q,r,s} sum x**2; 2 2 2 Q + R + S for i := 1:4 collect 1/i; 1 1 1 {1,-,-,-} 2 3 4 for i := 1:3 join list solve(x**2 + i*x + 1,x); SQRT(3)*I + 1 {{X= --------------, 2 SQRT(3)*I - 1 X= --------------} 2 {X=-1}, SQRT(5) + 3 SQRT(5) - 3 {X= - -----------,X=-----------}} 2 2 </TT></PRE><P>The behavior of each of the five action words follows: <P> <P> <P><PRE><TT> Action Word Behavior Keyword Argument Type Action do statement, command, group Evaluates its argument once or block for each iteration of the loop, not saving results collect expression, statement, Evaluates its argument once for command, group, block, list each iteration of the loop, storing the results in a list which is returned by the for statement when done join list or an operator which Evaluates its argument once for produces a list each iteration of the loop, appending the elements in each individual result list onto the overall result list product expression, statement, Evaluates its argument once for command, group or block each iteration of the loop, multiplying the results together and returning the overall product sum expression, statement, Evaluates its argument once for command, group or block each iteration of the loop, adding the results together and returning the overall sum </TT></PRE><P>For number-driven <em>for</em> statements, if the ending limit is smaller than the beginning limit (larger in the case of negative steps) the action statement is not executed at all. The iterative variable is local to the <em>for</em> statement, and does not affect the value of an identifier with the same name. For list-driven <em>for</em> statements, if the list is empty, the action statement is not executed, but no error occurs. <P> <P> You can use nested <em>for</em> statements, with the inner <em>for</em> statement after the action keyword. You must make sure that your inner statement returns an expression that the outer statement can handle. <P> <P> <P>