Tôi đang cố gắng đánh máy một đoạn mã được cung cấp dưới dạng chuỗi.Tôi phải sử dụng gói haskell-type-exts như thế nào?
Tôi tìm thấy gói haskell-type-exts (hackage link) có vẻ như cung cấp những gì tôi cần: Với parseModule
AST được xây dựng trên đó typecheckModule
có thể được áp dụng. Nhưng sau đó tôi không biết phải làm gì với kết quả. Nó thuộc loại Tc VarEnv
trong đó Tc
là một đơn nguyên.
Các gói phần mềm cung cấp một trường hợp thử nghiệm nơi một cái gì đó như thế này được sử dụng:
ea <- runTc testEnv $ typecheckExp e
Nhưng runTc
là trong một module ẩn vì vậy tôi không thể sử dụng nó. Đây là mã tôi có cho đến nay:
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?
Tôi thiếu gì ở đây? Có lẽ mô-đun chỉ bị ẩn do nhầm lẫn?
Tôi nghĩ gói này chưa sẵn sàng để sử dụng. Chỉ cần nhìn vào nguồn của Language.Haskell.TypeCheck: http://hackage.haskell.org/packages/archive/haskell-type-exts/0.1.0/doc/html/src/Language-Haskell-TypeCheck.html# typeCheck 'typeCheck = undefined' typechecks tất nhiên! Bạn có thể thử sử dụng GHC-API ([Haddock] (http://www.haskell.org/ghc/docs/latest/html/libraries/ghc/index.html) và [Wiki Page] (http: // www.haskell.org/haskellwiki/GHC/As_a_library)) – bennofs
Có vẻ như bạn đúng và tôi không còn lựa chọn nào khác. Cảm ơn bạn đã dành thời gian cho việc này. – somesoaccount
Câu hỏi này dường như không có chủ đề vì nó là về gói phần mềm thử nghiệm của bên thứ ba chưa bao giờ được hoàn thành và dường như đã bị hủy bỏ vài năm trước. Câu hỏi này có thể không trả lời được. –