文字列として提供されたコード スニペットを型チェックしようとしています。
必要なものを提供しているように見えるパッケージ haskell-type-exts ( hackage link ) を見つけました:適用できる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?
ここで何が欠けていますか?モジュールが誤って非表示になっているだけでしょうか?