<div dir="ltr"><div class="gmail_extra">On Fri, Apr 10, 2015 at 10:03 PM, effectfully <span dir="ltr">&lt;<a href="mailto:effectfully@gmail.com" target="_blank">effectfully@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
&gt; But with non-strict positive types you can eliminate the zip penalty.<br>
</span>I&#39;ve been thinking for quite a long time, that it&#39;s not even possible.<br>
Is your technique described somewhere?<br>
<br>
[1] <a href="http://okmij.org/ftp/Haskell/LC_Pnum.lhs" target="_blank">http://okmij.org/ftp/Haskell/LC_Pnum.lhs</a><br>
</blockquote></div><br><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">​It&#39;s not described anywhere that I know of. It was shown to me by someone else---a person who goes as ski in #haskell (and other channels) on freenode, whose real name I don&#39;t know off hand, and who I assume came up with the idea in the first place.</div><br><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">​I haven&#39;t done much investigation of what else you can do with this sort of thing. I doubt it gets you O(1) tail, for instance. The key seems to be that zip has to tear down and build everything anyway, this just ensures you build only the output, instead of rebuild​ing one of the inputs many times. Mostly I keep it in the back of my mind for when someone asks why you might want non-strict positive types. :)<br><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">-- Dan<br></div><br></div></div>