Fastest way to reload module with GHC API

Simon Marlow marlowsd at gmail.com
Fri Jan 25 17:29:51 CET 2013


Has the file's modification time changed?  If you're doing this very 
quickly (within 1 second) then you might run into this:

http://hackage.haskell.org/trac/ghc/ticket/7473

Cheers,
	Simon

On 25/01/13 16:02, JP Moresmau wrote:
> When I do that (only adding the target once and just doing load after
> the file has changed) the changes in the file are not taken into account
> (getNamesInScope for example doesn't give me the name of a type added
> inside the file). I probably have my stupid hat on (friday
> afternoon...), but when I do remove/load in between it works...
>
> Thanks
>
>
> On Fri, Jan 25, 2013 at 4:33 PM, Simon Marlow <marlowsd at gmail.com
> <mailto:marlowsd at gmail.com>> wrote:
>
>     On 25/01/13 14:30, JP Moresmau wrote:
>
>         Hello, I just want to be sure of what's the fastest way to reload a
>         module with the GHC API.
>         I have a file whose path is fp
>         I load the module with:
>         addTarget Target { targetId = TargetFile fp Nothing,
>         targetAllowObjCode
>         = True, targetContents = Nothing }
>         Then I load the module
>         load LoadAllTargets
>         And when I want to reload the module (the contents of fp have
>         changed) I do:
>         removeTarget (TargetFile fp Nothing)
>         load LoadAllTargets
>         and then I rerun my initial code (addTarget, load)
>
>
>     You should be able to just invoke 'load LoadAllTargets' and omit the
>     intermediate remove/load step.  Or is there a reason you want to
>     remove the target?
>
>     Cheers,
>              Simon
>
>
>
>
> --
> JP Moresmau
> http://jpmoresmau.blogspot.com/




More information about the Glasgow-haskell-users mailing list