[String] -> IO [Type] typeObjects modules-6ren">
gpt4 book ai didi

haskell - 如何处理 "panic: the impossible happened"并在 Haskell 中继续

转载 作者:行者123 更新时间:2023-12-04 10:42:34 25 4
gpt4 key购买 nike

我有以下代码使用 GHC API 加载模块并获取表达式的类型:

typeObjects :: [String] -> [String] -> IO [Type]
typeObjects modules objects = do
defaultErrorHandler defaultDynFlags $ do
runGhc (Just libdir) $ do
dflags <- getSessionDynFlags
setSessionDynFlags dflags
targets <- mapM ((flip guessTarget) Nothing) modules
setTargets targets
result <- load LoadAllTargets
case result of
Failed -> error "Compilation failed"
Succeeded -> do
m <- mapM (((flip findModule) Nothing) . mkModuleName) modules
setContext m []
values <- mapM exprType objects
return values

如果表达式不进行类型检查,则整个程序会崩溃:
TestDynamicLoad: panic! (the 'impossible' happened)
(GHC version 7.0.3.20110330 for x86_64-unknown-linux):
Couldn't match expected type `GHC.Types.Int'
with actual type `[GHC.Types.Char]'

我怎样才能使它不会使程序崩溃?我只想知道哪些表达式类型检查成功,哪些没有。

最佳答案

你无法处理它 - 这就像内核'oops',意味着运行时或编译器处于不一致状态。将其报告为错误。

关于haskell - 如何处理 "panic: the impossible happened"并在 Haskell 中继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9242996/

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