1

按照示例文件,我尝试动态调用 IO 操作。

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

不幸的是,该字符串"some string"从未被打印出来。我也尝试调用writeFile,但也没有创建文件。

那么需要什么来实现这些副作用呢?谢谢!

4

1 回答 1

3

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

interpret somecode (as :: IO ()) >>= liftIO
于 2013-06-08T00:38:57.077 回答