<br><br><div><span class="gmail_quote">On 2/13/07, <b class="gmail_sendername">Duncan Coutts</b> &lt;<a href="mailto:duncan.coutts@worc.ox.ac.uk">duncan.coutts@worc.ox.ac.uk</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, 2007-02-13 at 15:27 -0500, Jefferson Heard wrote:<br>&gt; Hi, I am running the following code against a 210 MB file in an attempt to<br>&gt; determine whether I should use alex or whether, since my needs are very<br>
&gt; performance oriented, I should write a lexer of my own.&nbsp;&nbsp;I thought that<br>&gt; everything I&#39;d written here was tail-recursive<br><br>Isn&#39;t that exactly the problem - that it&#39;s tail recursive? You do not<br>
want it to be tail recursive since then it must consume the whole input<br>before producing any output. You want it to be as lazy as possible so<br>that it can start producing tokens as soon as possible without having to<br>
consume everything.</blockquote><div><br>This may be silly of me, but I feel like this is an important point:&nbsp; so you&#39;re saying that tail recursion, without strictness, doesn&#39;t run in constant space?<br><br>So for example in the case of,
<br>facTail 1 n&#39; = n&#39;<br>facTail n n&#39; = facTail (n-1) (n*n&#39;)<br>You&#39;ll just be building a bunch of unevaluated thunks until you hit the termination condition?<br>&nbsp;</div><br><div><br>&nbsp;</div><br></div><br>