<div class="gmail_quote">On Wed, Aug 18, 2010 at 4:38 PM, Lennart Augustsson <span dir="ltr">&lt;<a href="mailto:lennart.augustsson@gmail.com">lennart.augustsson@gmail.com</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;">

You don&#39;t know that f is strict in its first argument so you cannot<br>
deduce that go is strict in z in the first case.<br></blockquote></div><br>I&#39;m not sure I understand.<br><br>f :: Int -&gt; Int -&gt; Int -&gt; Int<br>f = \x y z -&gt; x + y + z<br><br>in this particular case so it&#39;s strict in all its parameters since + is strict (for Ints). f is inlined into go so it should be possible to deduce that go is indeed strict. As I mentioned to Ian you get the same result if you inline f manually.<br>

<br>Cheers,<br>Johan<br><br>