Artifact 6baf3daab48b545f076d5e55532f3fa4f42554b127de8c5eb40e79a39eb96a9b:
- Executable file
r37/lisp/csl/html/r37_0024.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: 3007) [annotate] [blame] [check-ins using] [more...]
<A NAME=assign> <TITLE>assign</TITLE></A> <b><a href=r37_idx.html>INDEX</a></b><p><p> <B>:=</B> _ _ _ <B>ASSIGN</B> _ _ _ _ _ _ _ _ _ _ _ _ <B>operator</B><P> <P> <P> <P> The <em>:=</em> is the assignment operator, assigning the value on the right-han d side to the identifier or other valid expression on the left-hand side. <P> <P> <P> <H3> syntax: </H3> <restricted\_expression> <em>:=</em> <expression> <P> <P> <P> <restricted\_expression> is ordinarily a single identifier, though simple expressions may be used (see Comments below). <expression> is any valid REDUCE expression. If <expression> is a <A HREF=r37_0345.html>matrix</A> identifier, then <restricted\_expression> can be a matrix identifier (redimensioned if necessary) which has each element set to the corresponding elements of the identifier on the right-hand side. <P> <P> <P> <H3> examples: </H3> <P><PRE><TT> a := x**2 + 1; 2 A := X + 1 a; 2 X + 1 first := second := third; FIRST := SECOND := THIRD first; THIRD second; THIRD b := for i := 1:5 product i; B := 120 b; 120 w + (c := x + 3) + z; W + X + Z + 3 c; X + 3 y + b := c; Y + B := C y; - (B - C) </TT></PRE><P>The assignment operator is right associative, as shown in the seco nd and third examples. A string of such assignments has all but the last item set to the value of the last item. Embedding an assignment statement in another expression has the side effect of making the assignment, as well as causing the given replacement in the expression. <P> <P> Assignments of values to expressions rather than simple identifiers (such as in the last example above) can also be done, subject to the following remarks: <P> <P> _ _ _ (i) If the left-hand side is an identifier, an operator, or a power, the substitution rule is added to the rule table. <P> <P> _ _ _ (ii) If the operators <em>- + /</em> appear on the left-hand side, all but the first term of the expression is moved to the right-hand side. <P> <P> _ _ _ (iii) If the operator <em>*</em> appears on the left-hand side, any constant terms are moved to the right-hand side, but the symbolic factors remain. <P> <P> Assignment is valid for <A HREF=r37_0188.html>array</A> elements, but not for entire arrays. The assignment operator can also be used to attach functionality to operators. <P> <P> A recursive construction such as <em>a := a + b</em> is allowed, but when <em>a</em> is referenced again, the process of resubstitution continues until the expression stack overflows (you get an error message). Recursive assignments can be done safely inside controlled loop expressions, such as <A HREF=r37_0047.html>for</A>... or <A HREF=r37_0056.html>repeat</A>...<em>until</em>. <P> <P> <P> <P>