2013-07-07 11 views
13

Próbuję sprawdzić poprawność kodu podanego w postaci ciągu.W jaki sposób mam korzystać z pakietu haskell-type-exts?

Znalazłem pakiet Haskell-Type-ekstrahowane (hackage link), który wydaje się zapewniać co potrzebne: Z parseModule AST zostanie zbudowana na którym typecheckModule mogą być stosowane. Ale nie wiem, co zrobić z wynikiem. Jest to typ Tc VarEnv, gdzie Tc jest monadą.

Pakiet stanowi przypadek testowy, gdzie jest używany mniej więcej tak:

ea <- runTc testEnv $ typecheckExp e 

Ale runTc jest w ukrytym module, więc nie mogę go używać. Oto kod, który mam do tej pory:

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? 

Czego tu mi brakuje? Może moduł jest tylko ukryty przez pomyłkę?

+8

Myślę, że ten pakiet nie jest jeszcze gotowy do użycia. Wystarczy spojrzeć na źródło 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 oczywiście! Możesz spróbować użyć GHC-API ([Haddock] (http://www.haskell.org/ghc/docs/latest/html/libraries/ghc/index.html) i [Wiki] (http: // www.haskell.org/haskellwiki/GHC/As_a_library)) – bennofs

+0

Wygląda na to, że masz rację i nie mam innego wyboru. Dziękuję za poświęcenie czasu na to. – somesoaccount

+0

To pytanie wydaje się być nie na temat, ponieważ dotyczy eksperymentalnego oprogramowania innej firmy, które nigdy nie zostało ukończone i wydaje się być opuszczone kilka lat temu. To pytanie prawdopodobnie nie jest możliwe. –

Odpowiedz

1

Myślę, że ten pakiet nie jest jeszcze gotowy do użycia. Wystarczy spojrzeć na source of Language.Haskell.TypeCheck. Na przykład typeCheck = undefined typechecks oczywiście!

Możesz spróbować użyć GHC-API (Haddock i Strona Wiki).

Powiązane problemy