Как мне определить, из какого из моих импортных товаров в Haskell?
У меня есть куча импортов в моем пакете, и мне нужно разобраться, какие из них приходят из определенного пакета (MissingH). Я не уверен, как это сделать, кроме как для поиска каждого в Google. Есть ли способ сделать это программно или из командной строки, просто сканируя файлы моего пакета?
Вот мой список импорта (из всех файлов моего пакета):
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)
2 ответа
Если пакеты находятся в Stackage, вы можете проверить список модулей на моментальный снимок, чтобы получить Map ModuleName [PackageName]
переписка. Да, имя модуля может отображаться в нескольких пакетах для каждого снимка. Вот пример листинга:
Вы можете спросить 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)
Вероятно, вы можете подготовить несколько быстрых сценариев, чтобы автоматизировать вызов этого и покрыть 99,9% кода, который люди фактически пишут. Возможно, вы также захотите злоупотребить graphmod- используйте его для создания графа модулей, затем игнорируйте всю структуру графа и просто переберите список имен модулей, которые он для вас обнаружит, и вызовитеghc-pkg
на каждой.
... но это, вероятно, будет гораздо быстрее, просто удалитьMissingH
из зависимостей в вашем файле cabal (вы используете инструмент сборки, такой как стек или cabal, верно??) и посмотрите, на какие жалобы GHC жалуется импорт.