I'm new to Haskell and trying to get a better understanding of sharing
(and ultimately memoization).  I've read SOE and various of the
tutorials, as well as browsing around the wiki and old mailing lists.  

 

Most of the examples of memoization seem to revolve around Fibonacci,
and are based either on the fact that a list defined within the function
will get shared between calls, or on doing some 'unsafeIO' (which I
haven't dug too deeply into.)   

 

I've read various discussions that explain why function calls are
generally not automatically memoized (e.g. f x  gets recalculated rather
than looked up based on the prior result).  The rationale for that (big
space leak and no guarantee of improved performance) makes sense.
(Though I did like one poster's suggestion of a compiler pragma that
hints that a particular function should be memoized.)

 

I've seen other discussions that suggest that lists are always shared
while in scope (so the fibs trick works).  But is that just a feature of
the standard compilers, or is it somewhere mandated in the Hakell spec
(I don't see anything obvious in the Haskell Report tho haven't read it
cover to cover)? 

 

The wiki page http://www.haskell.org/haskellwiki/Performance/Strictness
says laziness == non-strictness + sharing but again nowhere gives a set
of rules that guarantees what will be shared and what won't.  I was
hoping I might find it here: http://www.haskell.org/haskellwiki/Sharing
but no such luck.  Or are there no guarantees and you just have to know
how your particular compiler works??

 

Cheers,

Patrick

 


________________________________________________________________________
DISCLAIMER: This e-mail is intended only for the addressee named above. As this 
e-mail may contain confidential or privileged information, if you are not the 
named addressee, you are not authorised to retain, read, copy or disseminate 
this message or any part of it. If you received this email in error, please 
notify the sender and delete the message from your computer.
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to