是否可以追踪导致特定标识符的进口链?

Ben*_*Ben 2 haskell ghc

由于更新了依赖关系,Haskell程序包(我们称其为程序包A)已停止为我编译,并且出现有关未定义变量的错误。我可以访问一个旧的依赖环境,在该环境仍可以编译完全相同的代码,因此我可以在GHCi中打开该模块,并使用它:info来跟踪其最初来自何处,从而将我引到B包中。

麻烦的是,A中已损坏的模块无法直接B导入定义此丢失标识符的模块。它一定是通过另一个将其重新导出的导入获取的。但是在这两种环境之间,AB都没有改变。因此,这意味着第三个程序包C中的模块必须先前已经从B导入并重新导出了我的标识符,然后才能由A中的损坏模块导入(可能通过进一步的重新导出),并且C在两个环境中不再重新导出标识符。

我可以在工作环境中以某种方式向GHC或Cabal索要完整的进口链,从而导致标识符在范围内,以便我可以识别包装C吗?否则,我不知道如何来缩小问题的原因,而无需手动审查所有的(传递)的依赖关系一个能够从振振有词进口的东西

Dan*_*ner 6

我不知道要问整个链的方法,但是您可以-ddump-minimal-imports用来问问链的第一步,然后进行迭代。