File: dotimes.htm

package info (click to toggle)
nyquist 3.20%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 58,008 kB
  • sloc: ansic: 74,743; lisp: 17,929; java: 10,723; cpp: 6,690; sh: 171; xml: 58; makefile: 40; python: 15
file content (101 lines) | stat: -rw-r--r-- 3,522 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<html><head><title>XLISP dotimes</title>

<link rel="stylesheet" type="text/css" href="reference.css">

</head>

<body>

<a href="../start.htm">Nyquist / XLISP 2.0</a>&nbsp; -&nbsp;
<a href="../manual/contents.htm">Contents</a> |
<a href="../tutorials/tutorials.htm">Tutorials</a> |
<a href="../examples/examples.htm">Examples</a> |
<a href="reference-index.htm">Reference</a>

<hr>

<h1>dotimes</h1>

<hr>

<p><table cellpadding="0" cellspacing="0" style="margin-left:10px"><tbody>
<tr valign="top">
  <td><nobr>Type:</nobr></td>
  <td><nobr>&nbsp;&nbsp;-&nbsp;&nbsp;</nobr></td>
  <td width="100%"><nobr>special form (fsubr)</nobr></td>
</tr>
<tr valign="top">
  <td><nobr>Source:</nobr></td>
  <td><nobr>&nbsp;&nbsp;-&nbsp;&nbsp;</nobr></td>
  <td width="100%"><nobr>xlcont.c</nobr></td>
</tr>
</tbody></table></p>

<h2>Syntax</h2>

<dl>
<dt>(dotimes (<i>symbol end-expr</i> [<i>result</i>]) [<i>expr</i> ... ])</dt>
<dd><i>symbol</i> - a symbol<br>
<i>end-expr</i> - an integer expression<br>
<i>result</i> - an optional expression for the returned result<br>
<i>expr</i> - expressions comprising the body of the loop which may
contain <a href="return.htm">return</a>s,
<a href="go.htm">go</a>s or tags for
<a href="go.htm">go</a><br>
returns - the return value of the result expression or
<a href="nil.htm">NIL</a> </dd>
</dl>

<h2>Description</h2>

<p>The 'dotimes' special form is basically a 'for' looping construct that
contains a loop 'symbol', an 'end-expr' to specify the final value for
'symbol', an optional 'return' value and a block of code [expressions] to
evaluate. The sequence of execution is:</p>


<pre>
  <i>symbol</i> := 0
  while  <i>symbol</i> value is not equal to <i>end-expr</i> value
    loop code execution
    <i>symbol</i> := <i>symbol</i> + 1
  end-while
  return <i>result</i>
</pre>

<p>The main loop 'symbol' will take on successive values from zero to
<nobr>('end-expr' - 1).</nobr> The 'dotimes' form will go through and create
and initialize the 'symbol' to zero. After execution of the loop 'exprs',
the 'symbol' value is incremented. This continues until the 'symbol' value
is equal to 'end-expr'. The value of the 'result' expression is evaluated
and returned. If no 'result' is specified,
<a href="nil.htm">NIL</a> is returned. When the 'dotimes' is
finished execution, the 'symbol' that was defined will no longer exist or
retain its value. If the 'end-expr' is zero or less, then there will be no
execution of the loop body's code.</p>

<h2>Examples</h2>

<pre class="example">
(dotimes (i 4 "done") (princ i))  <font color="#008844">; prints 0123 returns "done"</font>
(dotimes (i 4) (princ i))         <font color="#008844">; prints 0123 returns NIL</font>
(dotimes (i 1) (princ i))         <font color="#008844">; prints 0    returns NIL</font>
(dotimes (i 0) (princ i))         <font color="#008844">; returns NIL</font>
(dotimes (i -9) (princ i))        <font color="#008844">; returns NIL</font>
</pre>

<p>See the
<a href="../manual/xlisp-man-020.htm#dotimes">dotimes</a>
special form in the <nobr>XLISP 2.0</nobr> manual.</p>

<p><nobr>&nbsp;&nbsp;<a href="#top">Back to Top</nobr></a></p>

<hr>

<a href="../start.htm">Nyquist / XLISP 2.0</a>&nbsp; -&nbsp;
<a href="../manual/contents.htm">Contents</a> |
<a href="../tutorials/tutorials.htm">Tutorials</a> |
<a href="../examples/examples.htm">Examples</a> |
<a href="reference-index.htm">Reference</a>

</body></html>