On 07 September 2004 12:24, George Russell wrote:

> Simon Peyton-Jones wrote:
>> It's documented behaviour.
>> 
>> * import Text.ParserCombinators.Parsec will work without any -package
>> flags, if any installed package has a module
>> Text.ParserCombinators.Parsec.  It's very tiresome adding -package
>> flags all the time. 
>> 
>> * The link step needs -package flags, because it only gets .o files,
>> and we didn't want it to start hunting through .hi files (though
>> that would be possible) 
>> 
>> * ghc Main.hs is by definition equivalent to ghc -c Main.hs; ghc
>> Main.o, and the latter step needs the package flag. If you say ghc
>> --make Main.hs you'll get what you want.
> 
> Even though it is documented behaviour I think it is wrong.
> It looks as if we now have the rather complicated situation that
> "import Text.ParserCombinators.Parsec" will work during compilation
> without loading the package parsec *unless* one of the other modules
> being compile imports this module and uses Template Haskell.  It will
> work during linking *if* you used --make, but otherwise you get some
> very user-unfriendly messages about undefined symbols.

I don't like it either, but I don't like it less than the other
solutions.  I don't like the other solutions quite a lot.

Could you elaborate on the template haskell problem you mentioned?  I
don't think template haskell is affected by this (i.e. it's still just
batch linking that requires the -package options, template haskell
should still work just fine without them).

> GHC's package system is good because it makes libraries
> available in a uniform way.  The above complex rules just make things
> more complicated.  People who have trouble typing "--package parsec"
> should learn to use Make.  The solution someone else proposed of
> stashing extra information in the object file to help the linker just
> seems to me a recipe for more complexity, and in any case wouldn't
> work when packages only contain non-GHC object files.  (Like some of
> mine.)

So you're proposing that -package options should *always* be required?
Even for --make?  I think you might encounter some resistance to that...

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to