<br><div class="gmail_quote">On Wed, Jun 2, 2010 at 21:41, Andrei Alexandrescu <span dir="ltr">&lt;<a href="mailto:SeeWebsiteForEmail@erdani.org">SeeWebsiteForEmail@erdani.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On 06/02/2010 02:29 PM, Philippe Sigaud wrote:<br>
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div class="im">
<br>
<br>
On Wed, Jun 2, 2010 at 19:57, bearophile &lt;<a href="mailto:bearophileHUGS@lycos.com" target="_blank">bearophileHUGS@lycos.com</a><br></div><div><div></div><div class="h5">
&lt;mailto:<a href="mailto:bearophileHUGS@lycos.com" target="_blank">bearophileHUGS@lycos.com</a>&gt;&gt; wrote:<br>
<br>
    Philippe Sigaud:<br>
     &gt; What, do you also need the no-arg version of iota?<br>
     &gt;<br>
     &gt; :-p<br>
<br>
    I&#39;d like a generator (range) similar to the Python itertools.count,<br>
    that yields numbers starting from the given number (defaulting to<br>
    zero) and just goes on and on. You can use it in many situations:<br>
    <a href="http://docs.python.org/library/itertools.html#itertools.count" target="_blank">http://docs.python.org/library/itertools.html#itertools.count</a><br>
<br>
<br></div></div><div class="im">
Yes, it&#39;s handy. It&#39;s one of the first range I made, a year ago.<br>
</div></blockquote>
<br>
iota(n, n.max) is close. Well, it&#39;s not infinite, but cycle(iota(n, n.max)) is. Probably a version using BigInt would be most sensible.<font color="#888888"><br></font></blockquote><div><br><br></div><div><br>As it&#39;s mostly used to enumerate/index ranges or generate some simple numbers, iota(n,n.max) is largely good enough, except, as you said it&#39;s not infinite. I never used iota much, it regularly crashed on me in the beginning. I can&#39;t remember why.<br>
<br>I don&#39;t know if your suggestion of BigInt is a joke or not, but the truth is, I have a version using any numerical type, I called it numberz. numbers is the standard version, numberz!T the templated. It uses T for indexing also (it&#39;s a random-access range), which allowed me to do<br>
<br>auto r = numberz(BigInt(&quot;1000000000&quot;),  BigInt(&quot;10000000000&quot;));<br>auto n = r[BigInt(&quot;3000000000&quot;)];<br><br><br>Hmm, this doesn&#39;t work:<br>auto i = iota(BigInt(&quot;0&quot;),BigInt(&quot;10&quot;), BigInt(&quot;1&quot;));<br>
<br>But honestly, I just used it to learn ranges and D, and never had a real use for it. It&#39;s just the kind of things that&#39;s useful to try, to break out of some preconceptions (using a size_t to index..., 1u as a step).<br>
As you said, it already takes loooots of iterations to exhaust a long.<br><br><br> Philippe<br></div></div>