Was wäre das einfachste Beispiel für das Senden eines Ausdrucks an ghci über seine API zur Auswertung und zum Ausdrucken des Ergebnisses? Ich kann kein vollständiges Beispiel finden, das funktionieren würde. Ja, ich habe versucht https://wiki.haskell.org/GHC/As_a_library, aber ich bekomme immer Fehler, die mir nicht viel sagen: no package state yet: call GHC.setSessionDynFlags
. Wo auch immer ich setSessionDynFlags
mit irgendwelchen Argumenten oder setContext
versuche, habe ich immer einen Fehler. Ich habe zur Zeit (kein setXYZ
):Verwenden von GHC als Bibliothek
import GHC
import GHC.Paths (libdir)
import GhcMonad
import Debugger
import DynFlags
import Outputable
import Language.Haskell.HsColour
import Language.Haskell.HsColour.Colourise
colour :: String -> String
colour = hscolour TTY defaultColourPrefs True True "" False
ghci :: IO()
ghci = runGhc (Just libdir) $ do
r <- runStmt "[1, 2, 3]" RunToCompletion
case r of
RunOk ns -> do
mapM_ (\n -> do
mty <- lookupName n
case mty of
Just (AnId id) -> do
t <- obtainTermFromId maxBound True id
fl <- getSessionDynFlags
liftIO $ putStrLn $ colour $ show $ withPprStyleDoc fl defaultUserStyle $ ppr t
return()
otherwise -> return()
) ns
otherwise -> return()
main :: IO()
main = ghci
Sie könnten daran interessiert sein https : //hackage.haskell.org/package/hint – arrowd
Danke, das scheint wirklich sehr interessant! :) – jakubdaniel