
Henning Thielemann wrote:
On Mon, 6 Dec 2004, Robert Dockins wrote:
The problem, of course, is that Haskell likes to tightly bind with the libraries it uses (inlineing across modules and other optimizations). So imaging if the "package" unit was a barrier to those kinds of optimizations. Then, no knowledge of the internals of the package are needed by importing modules, and "sufficently" compatable pacakges could be drop in replacements, .so or .dll style.
This would mean that functions like 'map' and 'foldr' couldn't be unrolled because they are in the package of the standard functions?
Probably it would make sense to have a basic set of modules which are not in any package, but which are avaliable to import into all modules. I image this would include things like the Prelude, the Haskell98 basic modules, the new Data.* modules, Control.*, Foreign.*, and probably a few other things as well (in short, most of the current Hierarchical Libraries). Obviously, barring map and foldr from inlining would be a Bad Idea. Things which exist now that I would think would work well behind a "no inline" barrier: Parsec wxHaskell HAXML HToolkit WASH dozens of others I don't know about I would guess that most of the entry points for these libraries are already too complicated for GHC to think that it is "worth" inlining them. Mandating a "no inline across packages" rule would likely not change their performance much.