查看ghc包文档,我发现了这个功能:
workingDirectoryChanged :: GhcMonad m => m ()
通知GHC工作目录已更改。 GHC将刷新其模块位置的缓存,因为它可能不再有效。
注意:在更改工作目录之前,请确保在同一会话中运行的所有线程都已停止。如果更改工作目录,还应该卸载当前程序(将目标设置为空,然后加载)。
我需要在更改目录时运行加载的代码并编译表达式。这有什么方法/解决方法吗?
我能想到的一个解决方案是拥有单独的目录,并在每次调用解释器时将workdir设置为该目录,然后恢复旧的pwd,但我不确定它是否可行或者这是否是最佳解决方案。