[Haskell-cafe] Re: [Haskell-beginners] laziness and optimization

Adrian Neumann aneumann at inf.fu-berlin.de
Sat Mar 21 10:56:28 EDT 2009


You should not rely on the compiler to spot such things. As far as I  
know GHC doesn't do automatic caching (in many cases that would hurt  
performance, I think). Have a look at http://haskell.org/haskellwiki/ 
Memoization perhaps.


Am 21.03.2009 um 14:02 schrieb Michael Mossey:

> I understand a bit about the concept of "lazy evaluation." I think  
> of that as saying an imperative language would always make one  
> evaluation, whereas Haskell might make 0 evaluations. I have  
> another similar situation where an imperative language would make N  
> evaluations of the same expression, and I would like Haskell to  
> make only 1.
>
> This is the situation: the graphical score editor displays  
> "LayoutItems." A LayoutItem can be a single displayed entity, like  
> a round notehead, or it can be composed of several entities.
>
> A common situation in my code is the need to determine the size and  
> shape of a LayoutItem. For a fundamental item, this can be looked  
> up in a table or read from the font properties. For a composite  
> item, some computation is required: the code must determine the  
> positions of each sub-item and compute the bounds of a shape  
> containing all of them.
>
> It's this latter computation, finding the bounds of a composite  
> item, which might come up multiple times. Consider that I ask for  
> the bounds of a composite-composite item (a composite item composed  
> of composite items). It will run the computation associated with  
> each composite sub-item, even though it is very likely I already  
> make that computation when I first constructed and placed that sub- 
> item.
>
> In an imperative language, one might cache values for later lookup.  
> This raises the problem of keeping the cache current to the current  
> state.
>
> So I'm wondering to what extent the haskell compiler recognizes  
> computations it's done before. In a purely functional language this  
> should be pretty easy, right? If it sees the same expression, it  
> knows it will have the same value. That's my understanding, so far.
>
> Thanks,
> Mike
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 194 bytes
Desc: Signierter Teil der Nachricht
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20090321/04a71a26/PGP.bin


More information about the Haskell-Cafe mailing list