<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 30, 2014 at 9:55 AM, David Feuer <span dir="ltr"><<a href="mailto:david.feuer@gmail.com" target="_blank">david.feuer@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class="">On Thu, Oct 30, 2014 Jan Stolarek wrote:<br></span><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
2. First pass of full laziness is followed by floating in. At that stage we have not yet run the<br>
demand analysis and yet the code that does the floating-in checks whether a binder is one-shot<br>
(FloatIn.okToFloatInside called by FloatIn.fiExpr AnnLam case). This suggests that cardinality<br>
analysis is done earlier (but when?) and that demand analysis is not the same thing as<br>
cardinality analysis.<br>
</blockquote><div><br></div></span><div>If you're looking at super-recent code, that could be Joachim Breitner's work. He's exposed the one-shot stuff at the Haskell level with the experimental magic oneShot function, intended primarily for use in the libraries to make foldl-as-foldr and related things be analyzed more reliably. The old GHC arity analysis combined with his Call Arity get almost everything right, but there are occasional corner cases where things go wrong, and when they do the results tend to be extremely bad.<br></div></div></div></div>
<br></blockquote><div><br></div><div>Joachim's work looks like neat stuff. I've only been scanning those emails, but I recall mention of interface files. Jan, would your question #2 be addressed by that information being imported from interface files? With separate compilation, phase ordering because more nuanced.</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/ghc-devs" target="_blank">http://www.haskell.org/mailman/listinfo/ghc-devs</a><br>
<br></blockquote></div><br></div></div>