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

时间:2013-07-07 09:46:30

标签: haskell typechecking

我正在尝试检查以字符串形式提供的代码段。

我发现包haskell-type-exts(hackage link)似乎提供了我需要的东西:使用parseModule构建一个可以应用typecheckModule的AST。但后来我不知道如何处理结果。它的类型为Tc VarEnv,其中Tc是monad。

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

ea <- runTc testEnv $ typecheckExp e

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?

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

1 个答案:

答案 0 :(得分:1)

我认为此套餐尚未准备好使用。只需看看source of Language.Haskell.TypeCheck。例如typeCheck = undefined typechecks当然!

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