<div dir="ltr">Generated code, sometimes including "deriving"-generated code.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 5, 2018 at 5:18 PM, Ben Franksen <span dir="ltr"><<a href="mailto:ben.franksen@online.de" target="_blank">ben.franksen@online.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Am 05.03.2018 um 13:40 schrieb Li-yao Xia:<br>
> On 03/05/2018 07:13 AM, Ben Franksen wrote:<br>
>> Okay, okay, I got it. I did not think about strictness when I asked. The<br>
>> funny thing is that the two fusion rules combined, as explained by<br>
>> Josef, seem to cause this shortcut to be taken. But that can't be true<br>
>> because (++) really is non-strict, I tested that, with -O2. How do you<br>
>> explain that?<br>
><br>
> Rewrite rules apply at compile time and don't force any computation.<br>
> The second rule fires only if the second argument of (++) is<br>
> syntactically []. Otherwise the code doesn't change, and strictness is<br>
> preserved.<br>
<br>
</span>Thanks, yet another thing learned. So<br>
<br>
  let ys = [] in xs ++ ys<br>
<br>
will traverse the spine of xs but<br>
<br>
  xs ++ []<br>
<br>
will not. Interesting.<br>
<br>
(But who writes something like "xs ++ []" in a real program?)<br>
<br>
Cheers<br>
<span class="HOEnZb"><font color="#888888">Ben<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>brandon s allbery kf8nh                               sine nomine associates</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>                                  <a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a></div><div>unix, openafs, kerberos, infrastructure, xmonad        <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a></div></div></div>
</div>