Sto provando a creare un programma che digita i file haskell per me utilizzando l'API GHC. Ho ottenuto il controllo del tipo di lavoro per i file locali, ma ho un pacchetto cabale specifico che devo essere disponibile (lo stesso pacchetto di cui questo eseguibile farà parte). Come si aggiunge questa dipendenza di importazione?Trovare pacchetti di cabal quando si utilizza l'API GHC
Ho anche provato a compilare con ghc riga di comando per capirlo, usando ghc -package PKG-VER --make Test.hs -v
ma sembra solo cercare nella directory locale per le importazioni.
mio codice attuale è simile al seguente:
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
Il pacchetto http://hackage.haskell.org/package/buildwrapper fa esattamente questo. Puoi usarlo come riferimento. – arrowd