मूल्यांकन के लिए अपने एपीआई के माध्यम से ghci को अभिव्यक्ति भेजने और परिणाम प्रिंट करने का सबसे सरल उदाहरण क्या होगा? मैं एक पूरा उदाहरण नहीं ढूंढ पा रहा हूं जो काम करेगा। हां, मैंने https://wiki.haskell.org/GHC/As_a_library की कोशिश की है, लेकिन मुझे त्रुटियां मिल रही हैं जो मुझे बहुत कुछ नहीं बताती: no package state yet: call GHC.setSessionDynFlags
। जहां भी मैं setSessionDynFlags
जो भी तर्क, या setContext
के साथ कोशिश करता हूं, मैं हमेशा एक त्रुटि के साथ समाप्त होता हूं। मैं वर्तमान में (कोई setXYZ
) है:लाइब्रेरी के रूप में जीएचसी का उपयोग
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
आप में रुचि हो सकती https : //hackage.haskell.org/package/hint – arrowd
धन्यवाद, वास्तव में बहुत दिलचस्प लगता है! :) – jakubdaniel