Подтвердить что ты не робот

Как я должен использовать пакет haskell-type-exts?

Я пытаюсь выполнить typecheck фрагмент кода, предоставленный в виде строки.

Я нашел пакет haskell-type-exts (ссылка hackage), который, кажется, обеспечивает то, что мне нужно: С parseModule AST получает построенный на основе typecheckModule. Но тогда я не знаю, что делать с результатом. Он имеет тип Tc VarEnv, где Tc является монадой.

Пакет содержит тестовый пример, в котором используется нечто подобное:

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?

Что мне здесь не хватает? Может быть, модуль скрыт по ошибке?

4b9b3361

Ответ 1

Я думаю, что этот пакет еще не готов к использованию. Просто посмотрите источник Language.Haskell.TypeCheck. Например, typeCheck = undefined typechecks, конечно!

Вы можете попробовать использовать GHC-API (Haddock и Wiki).