Language.Haskell.Interpreter - 如何正确调用IO操作?

时间:2013-06-07 23:53:29

标签: haskell interpreter monads ghc-api

example file之后,我尝试动态调用IO操作。

testHint :: Interpreter ()
testHint = do
                setImportsQ [("Prelude", Nothing)]
                let somecode = "putStrLn \"some string\""
                interpret somecode (as :: IO ())
                say "hello"

不幸的是,永远不会打印字符串"some string"。我也试图调用writeFile,但也没有创建文件。

那么启用这些副作用需要什么?谢谢!

1 个答案:

答案 0 :(得分:3)

interpret不会自行运行任何IO次操作。它只是评估它并将其返回给您,然后您必须自己运行它,例如使用liftIO

interpret somecode (as :: IO ()) >>= liftIO