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ę?
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
Wygląda na to, że masz rację i nie mam innego wyboru. Dziękuję za poświęcenie czasu na to. – somesoaccount
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. –