我怎么应该使用包haskell-type-exts?

som*_*unt 13 haskell typechecking

我试图检查作为字符串提供的代码片段.

我发现包haskell-type- exts(hackage link)似乎提供了我需要的东西:用parseModuleAST构建typecheckModule可以应用的.但后来我不知道如何处理结果.这类型的Tc VarEnv地方Tc是一个单子.

该软件包提供了一个测试用例,其中使用了类似的东西:

ea <- runTc testEnv $ typecheckExp e
Run Code Online (Sandbox Code Playgroud)

但是runTc在一个隐藏的模块中,所以我不能使用它.这是我到目前为止的代码:

import Language.Haskell.Exts.Parser (parseModule, ParseResult(..))
import Language.Haskell.TypeCheck.TypeCheck
-- import Language.Haskell.TypeCheck.Monad  --hidden module

main = do
    let m = "myTest = map (+1) [1..10]"
    let r = parseModule m
    case r of
         ParseOk res -> printStuff res
         _ -> print "wtf"

printStuff r = do
    let Right tc = return $ typecheckModule r
--    print tc?
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?也许这个模块只是被错误隐藏了?

Sho*_*hoe 1

我认为这个包还没有准备好使用。只需查看Language.Haskell.TypeCheck 的来源即可。当然例如typeCheck = undefined类型检查!

您可以尝试使用 GHC-API(Haddock 和 Wiki 页面)。