
On Fri, Mar 09, 2007 at 10:24:14AM +0000, Simon Marlow wrote:
GHC doesn't have any kind of uniqueness analysis right now. It's pretty hard to do in general: imagine a function that takes an array as an argument and delivers an array as a result. It'll probably need two versions: one when the argument is unique, one for when it's not. If you can see all the call sites you might be able to throw away one of these versions, but with separate compilation that's the uncommon case.
Ah, yes. I keep on thinking this is used since I studied it carefully as a potential algorithm for jhc... (still undecided, my implementation is too buggy to use in production and jhc has enough bugs as is :) ) http://citeseer.ist.psu.edu/wansbrough98once.html
BTW, we don't do any update-avoidance at the moment. The old update analyser was slow and didn't give any significant benefit, so we dropped it.
I find a general problem when researching ghc is that a lot of past research projects used it as a base and declare things like 'we integrated this into the ghc 4.04 haskell compiler' but it is not clear whether the code actually made it back into the mainline or not.. Perhaps A section of the wiki is in order that lists the most recent paper that describes various parts of what is actually used in the production ghc. perhaps something like type checker : boxy types and impredicativity paper + Wobbly type GADT inference paper optimizer/simplifier : secrets of haskell inliner paper runtime: eval/apply vs push-enter paper garbage collector: non-stop collection for haskell paper fundep implementation: ? concurrency: STM papers + original concurrency paper (are these accurate BTW?) John -- John Meacham - ⑆repetae.net⑆john⑈