我怎样弄清楚我的哪些进口来自Haskell?

oro*_*ome 6 haskell

我的包中有一堆导入,需要找出哪些来自特定包(MissingH).除了在Hoogle上搜索每一个,我不确定如何做到这一点.有没有办法以编程方式或通过扫描我的包的文件在命令行执行此操作?

这是我的导入列表(来自我的包的所有文件):

import           Control.Arrow
import           Control.Exception      (assert)
import           Control.Monad          (unless)
import           Control.Monad.Except
import           Control.Monad.Zip
import           Control.Applicative
import           Data.Monoid
import           Data.List
import           Data.List.Split        (splitOn)
import qualified Data.Map               as M
import           Data.Maybe
import           Text.Printf            (printf)
import           Data.Char              (toUpper)
import           Data.String.Utils      (replace)

import Data.Char (chr, ord)
import Data.List (sort)

import Control.Applicative
import Data.Monoid
import Data.Char
import Data.List
import Data.List.Split          (chunksOf)
import Data.String.Utils        (replace)
import Text.Printf              (printf)
Run Code Online (Sandbox Code Playgroud)

Dan*_*ner 3

您可以询问 GHC 它认为模块来自哪里(如果您已经安装了提供该模块的软件包)。

% ghc-pkg find-module Data.Maybe
/usr/local/lib/ghc-8.2.2/package.conf.d
    base-4.10.1.0
/home/dmwit/.ghc/x86_64-linux-8.2.2/package.conf.d
    (no packages)
Run Code Online (Sandbox Code Playgroud)

您或许可以编写一些快速脚本来自动调用此脚本,并覆盖人们实际编写的 99.9% 的代码。您可能还想滥用graphmod - 使用它来创建模块图,然后忽略该图的所有结构,只迭代它为您发现的模块名称列表并调用ghc-pkg每个模块名称。

MissingH...但是从 cabal 文件中的依赖项中删除(您正在使用 stack 或 cabal 之类的构建工具,对吧?)并查看 GHC 抱怨的导入可能会更快。