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
|
<html>
<head><title>ZIP.html -- ACL2 Version 3.1</title></head>
<body text=#000000 bgcolor="#FFFFFF">
<h2>ZIP</h2>testing an ``integer'' against 0
<pre>Major Section: <a href="PROGRAMMING.html">PROGRAMMING</a>
</pre><p>
<code>(Zip i)</code> is logically equivalent to <code>(equal (ifix i) 0)</code> and is
the preferred termination test for recursion through the integers.
<code>(Zip i)</code> returns <code>t</code> if <code>i</code> is <code>0</code> or not an integer; it
returns <code>nil</code> otherwise. Thus,
<pre>
i (zip i)
3 nil
0 t
-2 nil
5/2 t
#c(1 3) t
'abc t
</pre>
<p>
<code>(Zip i)</code> has a <a href="GUARD.html">guard</a> requiring <code>i</code> to be an integer.<p>
For a discussion of the various idioms for testing against <code>0</code>,
see <a href="ZERO-TEST-IDIOMS.html">zero-test-idioms</a>.<p>
<code>Zip</code> is typically used as the termination test in recursions
through the integers. It has the advantage of ``coercing'' its
argument to an integer and hence allows the definition to be
admitted without an explicit type check in the body. <a href="GUARD.html">Guard</a>
verification allows <code>zip</code> to be compiled as a direct
<code><a href="=.html">=</a></code>-comparision with <code>0</code>.
<br><br><br><a href="acl2-doc.html"><img src="llogo.gif"></a> <a href="acl2-doc-index.html"><img src="index.gif"></a>
</body>
</html>
|