在example file之后,我尝试动态调用IO操作。
testHint :: Interpreter ()
testHint = do
setImportsQ [("Prelude", Nothing)]
let somecode = "putStrLn \"some string\""
interpret somecode (as :: IO ())
say "hello"
不幸的是,永远不会打印字符串"some string"
。我也试图调用writeFile
,但也没有创建文件。
那么启用这些副作用需要什么?谢谢!
答案 0 :(得分:3)
interpret
不会自行运行任何IO
次操作。它只是评估它并将其返回给您,然后您必须自己运行它,例如使用liftIO
:
interpret somecode (as :: IO ()) >>= liftIO