[Haskell-cafe] How to reload module that package has linked in memory?

Andy Stewart lazycat.manatee at gmail.com
Sun Dec 26 04:07:07 CET 2010


Hi Albert,

Thanks for reply!

"Albert Y. C. Lai" <trebla at vex.net> writes:

> On 10-12-25 10:47 AM, Andy Stewart wrote:
>> I use Linker.linkPackages and Linker.getHValue to get symbol value, but
>> looks Linker.getHValue can't get *update* value once current package has
>> linked in memory.
>>
>> So how to make Linker.getHValue can get *update* value and don't need
>> install *new* package in Cabal/GHC database?
>> How to *reload* module with current version package?
>
> Cannot be done. 
Unfortunately, my library just miss this part.
But i think reload same package must be can work, in principle.
 
> I suggest using no packages if you want a module refreshed. This is means using
> GHC.setTargets and GHC.load (I personally use loadWithLogger for improved error handling). You can
> still use Linker.getHValue at the end.
If not use package, we need handle depend problem self.
Example, same module name exist in two different depend package, we need pass
-package information myself, and no those problems if use cabal package. 

>
> See also http://thread.gmane.org/gmane.comp.lang.haskell.glasgow.user/18742/focus=18749
Do you have any improve code than above? :)

Thanks for help!

  -- Andy







More information about the Haskell-Cafe mailing list