<html><body>And of course the biggest reason for this change, is we want GHC to continue to become "smarter".&nbsp; Remember, Haskell is a high level language.&nbsp; The original promise, is that the code should be algebraically optimizable by the compiler itself.&nbsp; Yes, of course many Haskell coders have learned to deal with the places where Haskell is all to close to the metal.&nbsp; But we hope that this will not always be the case.&nbsp; The interesting part, may not be that you can add the pragma yourself, but that in the future, you won't have to change anything at all.<br><br>Tim<br><p><br>---------- Původní zpráva ----------<br>Od: Joachim Breitner &lt;breitner@kit.edu&gt;<br>Datum: 29. 8. 2012<br>Předmět: Re: [Haskell-cafe] A first glimps on the {-# NOUPDATE #-} pragma</p><blockquote>Hi Facundo,<br><br>Am Mittwoch, den 29.08.2012, 10:26 -0300 schrieb Facundo Domínguez:<br>&gt; &gt;         upd_noupd n =<br>&gt; &gt;             let l = myenum' 0 n<br>&gt; &gt;             in last l + length l<br>&gt; <br>&gt; This could be rewritten as<br>&gt; <br>&gt; &gt;         upd_noupd n =<br>&gt; &gt;             let l n = myenum' 0 n<br>&gt; &gt;             in last (l n) + length (l n)<br>&gt; <br>&gt; Or a special form of let could be introduced to define locally-scoped macros:<br>&gt; <br>&gt; &gt;         upd_noupd n =<br>&gt; &gt;             let# l = myenum' 0 n<br>&gt; &gt;             in last l + length l<br>&gt; <br>&gt; What's the strength of the {-# NOUPDATE #-} approach?<br><br>it does not require refactoring of the code. There is not always a<br>parameter handy that you can use to prevent sharing, and using () for<br>that sometimes fails due to the full-lazyness-transformation.<br><br>And a locally-scoped macros would not help in this case:<br><br>        test g n = g (myenum' 0 n)<br><br>Now you still might want to prevent the long list to be stored, but here<br>it cannot be done just by inlining or macro expansion.<br><br><br>Greetings,<br>Joachim<br><br>-- <br>Dipl.-Math. Dipl.-Inform. Joachim Breitner<br>Wissenschaftlicher Mitarbeiter<br><a href="http://pp.info.uni-karlsruhe.de/%7Ebreitner">http://pp.info.uni-karlsruhe.de/~breitner</a></blockquote></body></html>