<p dir="auto">Several of the types in the Iterators package are widely useful, plus have very small implementations that perform well. I would say these are: Count, Take, Drop, Cycle, Repeat, and RepeatForever. It would make sense to have these in Base.</p>
<p dir="auto">Also, iterators are afflicted by a mild case of "lettercase hell". We export both <code class="notranslate">Enumerate</code> and <code class="notranslate">enumerate</code>, etc. I would prefer to minimize the number of exported things that differ only in case. There are a few ways to deal with this:</p>
<ol dir="auto">
<li>Remove the lowercase versions entirely, and stick with the "uppercase means lazy" convention.</li>
<li>Rename the uppercase versions to something less appealing like <code class="notranslate">EnumerateIterator</code> so they are less easily confused.</li>
<li>Un-export (and possibly rename as well) the uppercase versions.</li>
</ol>
<p dir="auto">Mutually recursive type declarations such as</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type A
        a :: B
        b
end

type B
        c :: A
        d
end"><pre class="notranslate"><code class="notranslate">type A
        a :: B
        b
end

type B
        c :: A
        d
end
</code></pre></div>
<p dir="auto">appear to be presently unsupported, as per this discussion:</p>
<p dir="auto"><a href="https://groups.google.com/forum/#!msg/julia-users/LctRzct1R-M/s_vLVUxSyVcJ" rel="nofollow">https://groups.google.com/forum/#!msg/julia-users/LctRzct1R-M/s_vLVUxSyVcJ</a></p>
<p dir="auto">More generally, "out of order" type declarations also appear to be unsupported.</p>
<p dir="auto">Mutually recursive declarations are important for many recursive data structures: in complex cases, the workarounds required to produce singly recursive declarations can produce highly unreadable code with excessive redundancy and obscure relationships to the original concept.</p>
<p dir="auto">"Out of order" declarations are important for some forms of generic programming that depend on altering a subset of type definitions: in complex cases, the workarounds required to organize the inclusions in ordered form defeat much of the purpose of avoiding the unnecessary code duplication.</p>
<p dir="auto">I believe this issue is already well known, but I did not find an open issue on Github, which prevents easily checking its status.</p>