Byte-Transducers.html 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
  2. <html>
  3. <!-- Created on November 8, 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.5.3 Byte Transducers</title>
  14. <meta name="description" content="avram - a virtual machine code interpreter: 2.5.3 Byte Transducers">
  15. <meta name="keywords" content="avram - a virtual machine code interpreter: 2.5.3 Byte Transducers">
  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="Byte-Transducers"></a>
  40. <table cellpadding="1" cellspacing="1" border="0">
  41. <tr><td valign="middle" align="left">[<a href="Line-Maps.html#Line-Maps" title="Previous section in reading order"> &lt; </a>]</td>
  42. <td valign="middle" align="left">[<a href="Parameter-Mode-Interface.html#Parameter-Mode-Interface" 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="Filter-Mode-Interface.html#Filter-Mode-Interface" 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="Byte-Transducers-1"></a>
  58. <h3 class="subsection">2.5.3 Byte Transducers</h3>
  59. <p>The interface used when the <code>--byte-transducer</code> option is selected
  60. <a name="index-byte_002dtransducer-command-line-option-2"></a>
  61. allows an application to serve as a persistent stream processor suitable
  62. <a name="index-infinite-streams-2"></a>
  63. for finite or infinite streams. The interface can be summarized by the
  64. following points.
  65. </p>
  66. <ul>
  67. <li> When it is first invoked, the function in the virtual code file is
  68. applied to an argument of <code>nil</code>, and is expected to return a pair
  69. <code>(<var>state</var>,<var>output</var>)</code>. The <var>state</var> format is
  70. unconstrained. The <var>output</var> must be a character string that will
  71. be written to standard output, but it may be the empty string.
  72. </li><li> For each byte read from standard input, <code>avram</code> applies the function
  73. to the pair <code>(<var>state</var>,<var>character</var>)</code>, using the state
  74. obtained from previous evaluation, and the character whose code is the
  75. byte. The purpose of the <var>state</var> field is therefore to provide a
  76. way for the application to remember something from one invocation to
  77. the next.
  78. </li><li> The function is usually expected to return a pair
  79. <code>(<var>state</var>,<var>output</var>)</code> for each input byte, so that the state
  80. can be used on the next iteration, and the output can be written to standard
  81. output as a character string.
  82. </li><li> If the function ever returns a value of <code>nil</code>, the computation
  83. terminates.
  84. </li><li> If standard input comes to an end before the computation terminates,
  85. the function will be applied to a pair of the form
  86. <code>(<var>state</var>,nil)</code> thereafter, but may continue to return
  87. <code>(<var>state</var>,<var>output</var>)</code> pairs for arbitrarily many more iterations.
  88. The <code>EOF</code> character is not explicitly passed to the function, but
  89. the end is detectable insofar as <code>nil</code> is not a representation for
  90. any character.
  91. </li></ul>
  92. <p>Unlike the situation with line maps, the output character strings
  93. do not have line breaks automatically appended, and the application must
  94. include them explicitly if required. The convention for
  95. <a name="index-Unix-4"></a>
  96. line breaks is system dependent. On Unix and GNU/Linux systems, character
  97. code 10 indicates a line break, but other systems may use character code
  98. 13 followed by character code 10. See <a href="Character-Table.html#Character-Table">Character Table</a> for the
  99. <a name="index-character-codes-2"></a>
  100. representations of characters having these codes.
  101. </p>
  102. <hr size="1">
  103. <table cellpadding="1" cellspacing="1" border="0">
  104. <tr><td valign="middle" align="left">[<a href="Line-Maps.html#Line-Maps" title="Previous section in reading order"> &lt; </a>]</td>
  105. <td valign="middle" align="left">[<a href="Parameter-Mode-Interface.html#Parameter-Mode-Interface" title="Next section in reading order"> &gt; </a>]</td>
  106. <td valign="middle" align="left"> &nbsp; </td>
  107. <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>
  108. <td valign="middle" align="left">[<a href="Filter-Mode-Interface.html#Filter-Mode-Interface" title="Up section"> Up </a>]</td>
  109. <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Next chapter"> &gt;&gt; </a>]</td>
  110. <td valign="middle" align="left"> &nbsp; </td>
  111. <td valign="middle" align="left"> &nbsp; </td>
  112. <td valign="middle" align="left"> &nbsp; </td>
  113. <td valign="middle" align="left"> &nbsp; </td>
  114. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  115. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  116. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  117. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  118. </tr></table>
  119. <p>
  120. <font size="-1">
  121. This document was generated on <i>November 8, 2012</i> using <a href="http://www.nongnu.org/texi2html/"><i>texi2html 1.82</i></a>.
  122. </font>
  123. <br>
  124. </p>
  125. </body>
  126. </html>