Ich versuche, ein Programm, das Checks Haskell-Dateien für mich mit der GHC-API. Ich habe die Typprüfung für lokale Dateien bekommen, aber ich habe ein spezielles Cabal-Paket, das ich ebenfalls zur Verfügung haben muss (das gleiche Paket, zu dem diese ausführbare Datei gehört). Wie kann diese Importabhängigkeit hinzugefügt werden?Suche Cabal-Pakete bei der Verwendung der GHC-API
Ich versuchte auch kompilieren mit ghc-Befehlszeile, um herauszufinden, mit ghc -package PKG-VER --make Test.hs -v
, aber es scheint nur im lokalen Verzeichnis für Importe zu suchen.
Meine aktuellen Code sieht wie folgt aus:
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
Das Paket http://hackage.haskell.org/package/buildwrapper macht genau dies. Sie können es als Referenz verwenden. – arrowd