Compare.html 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
  2. <html>
  3. <!-- Created on December 10, 2012 by texi2html 1.82
  4. texi2html was written by:
  5. Lionel Cons <[email protected]> (original author)
  6. Karl Berry <[email protected]>
  7. Olaf Bachmann <[email protected]>
  8. and many others.
  9. Maintained by: Many creative people.
  10. Send bugs and suggestions to <[email protected]>
  11. -->
  12. <head>
  13. <title>avram - a virtual machine code interpreter: 2.7.11.1 Compare</title>
  14. <meta name="description" content="avram - a virtual machine code interpreter: 2.7.11.1 Compare">
  15. <meta name="keywords" content="avram - a virtual machine code interpreter: 2.7.11.1 Compare">
  16. <meta name="resource-type" content="document">
  17. <meta name="distribution" content="global">
  18. <meta name="Generator" content="texi2html 1.82">
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <style type="text/css">
  21. <!--
  22. a.summary-letter {text-decoration: none}
  23. blockquote.smallquotation {font-size: smaller}
  24. pre.display {font-family: serif}
  25. pre.format {font-family: serif}
  26. pre.menu-comment {font-family: serif}
  27. pre.menu-preformatted {font-family: serif}
  28. pre.smalldisplay {font-family: serif; font-size: smaller}
  29. pre.smallexample {font-size: smaller}
  30. pre.smallformat {font-family: serif; font-size: smaller}
  31. pre.smalllisp {font-size: smaller}
  32. span.roman {font-family:serif; font-weight:normal;}
  33. span.sansserif {font-family:sans-serif; font-weight:normal;}
  34. ul.toc {list-style: none}
  35. -->
  36. </style>
  37. </head>
  38. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  39. <a name="Compare"></a>
  40. <table cellpadding="1" cellspacing="1" border="0">
  41. <tr><td valign="middle" align="left">[<a href="Predicates.html#Predicates" title="Previous section in reading order"> &lt; </a>]</td>
  42. <td valign="middle" align="left">[<a href="Member.html#Member" title="Next section in reading order"> &gt; </a>]</td>
  43. <td valign="middle" align="left"> &nbsp; </td>
  44. <td valign="middle" align="left">[<a href="Virtual-Machine-Specification.html#Virtual-Machine-Specification" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
  45. <td valign="middle" align="left">[<a href="Predicates.html#Predicates" title="Up section"> Up </a>]</td>
  46. <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Next chapter"> &gt;&gt; </a>]</td>
  47. <td valign="middle" align="left"> &nbsp; </td>
  48. <td valign="middle" align="left"> &nbsp; </td>
  49. <td valign="middle" align="left"> &nbsp; </td>
  50. <td valign="middle" align="left"> &nbsp; </td>
  51. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  52. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  53. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  54. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  55. </tr></table>
  56. <hr size="1">
  57. <a name="Compare-1"></a>
  58. <h4 class="subsubsection">2.7.11.1 Compare</h4>
  59. <a name="index-compare"></a>
  60. <p>A function that performs comparison has a the following very simple
  61. virtual code representation.
  62. </p>
  63. <dl compact="compact">
  64. <dt> <em>T19</em></dt>
  65. <dd><p>[[<code>compare</code>]] = <code>(nil,nil)</code>
  66. </p></dd>
  67. </dl>
  68. <p>The proof of theorem <em>T19</em> is that the standard <code>silly</code> prelude
  69. contains the declaration <code>compare = (nil,nil)</code>. Code in this form
  70. has the following semantics.
  71. </p>
  72. <dl compact="compact">
  73. <dt> <em>P17</em></dt>
  74. <dd><p>For distinct trees <code><var>x</var></code> and <code><var>y</var></code>, [[<code>compare</code>]] <code>(<var>x</var>,<var>y</var>)</code> = <code>nil</code>
  75. </p></dd>
  76. <dt> <em>P18</em></dt>
  77. <dd><p>[[<code>compare</code>]] <code>(<var>x</var>,<var>x</var>)</code> = <code>(nil,nil)</code>
  78. </p></dd>
  79. </dl>
  80. <a name="index-equality-2"></a>
  81. <p>In other words, the virtual code <code>(nil,nil)</code> implements a function
  82. that takes a pair of trees and returns true if and only if they are
  83. equal.
  84. </p>
  85. <p>It would be fairly simple to write an equivalent virtual code
  86. application that implements this function if it were not realizable in
  87. this form by definition of the operator. However, this method is
  88. preferable because it saves space in virtual code and has a highly
  89. optimized implementation in C.
  90. </p>
  91. <hr size="1">
  92. <p>
  93. <font size="-1">
  94. This document was generated on <i>December 10, 2012</i> using <a href="http://www.nongnu.org/texi2html/"><i>texi2html 1.82</i></a>.
  95. </font>
  96. <br>
  97. </p>
  98. </body>
  99. </html>