GHC APIを使用してhaskellファイルをtypechecksするプログラムを作成しようとしています。私はローカルファイルのために働くためにタイプチェックを得ましたが、私は同じように利用可能である必要がある特定の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