2013-07-07 17 views
13

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?

+8

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

+0

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

+0

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. –

Trả lời

1

Tôi nghĩ rằng gói này chưa sẵn sàng để sử dụng. Chỉ cần nhìn vào số source of Language.Haskell.TypeCheck. Ví dụ: typeCheck = undefined typechecks tất nhiên!

Bạn có thể thử sử dụng GHC-API (Trang Haddock và Wiki).

Các vấn đề liên quan