2013-06-07 2 views
1

example file 다음에 동적으로 IO 작업을 호출하려고합니다.Language.Haskell.Interpreter - IO 작업을 올바르게 호출하는 방법?

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

불행하게도, 문자열 "some string"가 인쇄되지 않습니다. writeFile에도 전화를 걸었지만 파일이 생성되지 않았습니다.

그래서 이러한 부작용을 활성화하는 데 필요한 것은 무엇입니까? 고맙습니다!

답변

3

interpret은 (는) 모든 IO 작업을 실행하지 않습니다. 그것은 단지 그것을 평가하고 당신에게 반환 한 다음 예를 들어 liftIO를 사용하여, 스스로를 실행해야합니다 :

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

이 완벽하게 작동합니다. 고마워, 해머! – user1546806