1

Following the example file, I try to dynamically call an IO action.

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

Unfortunately, the string "some string" is never printed. I also tried to call writeFile but no file was created, either.

So what is needed to enable these side effects? Thank you!

user1546806
  • 137
  • 6

1 Answers1

3

interpret won't run any IO actions on its own. It'll just evaluate it and return it to you and then you have to run it yourself, for example using liftIO:

interpret somecode (as :: IO ()) >>= liftIO
hammar
  • 138,522
  • 17
  • 304
  • 385