gpt4 book ai didi

api - 使用 GHC 作为库

转载 作者:行者123 更新时间:2023-12-03 14:58:45 25 4
gpt4 key购买 nike

通过 api 向 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

最佳答案

所以当我在 GHC 开头添加这个初始化时,我的问题就解决了。我用 runGhc (Just libdir) 运行的表达式:

df <- getSessionDynFlags
setSessionDynFlags $ df { hscTarget = HscInterpreted
, ghcLink = LinkInMemory
}
setContext $ map (IIDecl . simpleImportDecl . mkModuleName) [ "Prelude" ]

关于api - 使用 GHC 作为库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32921132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com