
azrael@demonlords.net wrote:
When I use javac every file that is created is necessary for the application to run. This can't be said of the ghc compiler. Having an excuse that this is way the C compiler does it or that this is the way its always been done is to poor of a reason to even argue against. If a file isn't needed then it shouldn't be left there. [...] Does this bother me? Not in particular, its just an indication that this is an old design.
As Mark Carroll said, the .o and .hi files are there to support separate compilation. GHC supports separate compilation because it's useful. Believe me, Haskell is the last language to do something just because everyone else does it. :-) The javac approach isn't better, just different. If the next version of GHC could produce portable bytecode files, that would be a good thing (except that it would make GHC even more complicated than it already is). If the next version of GHC could *only* produce portable bytecode files, that would be a bad thing, since it would lose functionality (while gaining other functionality). Your newer-is-better premise makes little sense. Haskell is a far "newer" language than Java; many aspects of Haskell's design are no older than Haskell, while nearly all aspects of Java's design have been around in other languages for decades. You might as well be arguing that Java is better because it's based on older, proven technology. Better yet, suppress the urge to compare Haskell and Java at all; after all, the more different they are, the more worthwhile it is to learn both! Once you're reasonably adept at programming in different languages, then you can start thinking about ways to combine the advantages of each. -- Ben