<div class="gmail_quote">On Wed, Aug 18, 2010 at 4:38 PM, Lennart Augustsson <span dir="ltr"><<a href="mailto:lennart.augustsson@gmail.com">lennart.augustsson@gmail.com</a>></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'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'm not sure I understand.<br><br>f :: Int -> Int -> Int -> Int<br>f = \x y z -> x + y + z<br><br>in this particular case so it'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>