13

文字列として提供されたコード スニペットを型チェックしようとしています。

必要なものを提供しているように見えるパッケージ haskell-type-exts ( hackage link ) を見つけました:適用できるparseModuleAST が構築されます。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?

ここで何が欠けていますか?モジュールが誤って非表示になっているだけでしょうか?

4

1 に答える 1

1

このパッケージはまだ使用する準備ができていないと思います。Language.Haskell.TypeCheck のソースを見てください。たとえばtypeCheck = undefined、もちろん型チェックです!

GHC-API (Haddock および Wiki ページ) を使用してみることができます。

于 2015-01-10T12:16:47.903 に答える