J'essaie de créer un programme qui typecarque les fichiers haskell pour moi en utilisant l'API GHC. J'ai vérifié que le type fonctionne bien pour les fichiers locaux, mais j'ai un paquet cabal spécifique dont j'ai besoin (le même paquet que cet exécutable sera inclus). Comment ajouter cette dépendance d'importation?Recherche de paquets cabal lors de l'utilisation de l'API GHC
J'ai également essayé de compiler avec la ligne de commande ghc pour comprendre cela, en utilisant ghc -package PKG-VER --make Test.hs -v
mais il semble seulement chercher dans le répertoire local pour les importations.
Mon code actuel ressemble à ceci:
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
Le paquet http://hackage.haskell.org/package/buildwrapper fait exactement cela. Vous pouvez l'utiliser comme référence. – arrowd