当我试图做出typechecks Haskell的文件我使用GHC API的程序寻找阴谋包。我已经获得了类型检查,可以用于本地文件,但是我有一个特定的cabal软件包,我需要它也可以使用(这个可执行文件将是该软件包的一部分)。如何添加此导入依赖项?使用GHC API
我也试图与GHC命令行编译摸不着头脑,用ghc -package PKG-VER --make Test.hs -v
但似乎只在本地目录进口的样子。
我当前的代码如下所示:
import Control.Exception
import Control.Monad
import Control.Monad.State
import DynFlags
import Exception
import GHC
import GHC.Paths (libdir)
typecheck :: MonadIO m => [FilePath] -> FilePath -> m()
typecheck otherincludes fp =
liftIO . defaultErrorHandler defaultLogAction . runGhc (Just libdir) $ do
dynflags <- getSessionDynFlags
void $ setSessionDynFlags dynflags { includePaths = otherIncludes ++ includePaths dynflags }
target <- guessTarget fp Nothing
setTargets [target]
void $ load LoadAllTargets
deps <- depanal [] False
forM_ deps $ \ms -> parseModule ms >>= typecheckModule
的http://hackage.haskell.org/package/buildwrapper包正是这样做的。您可以将其用作参考。 – arrowd