haskell std输出流问题

时间:2015-12-20 17:06:48

标签: haskell stdout

考虑这个haskell代码

import GHC
import GhcMonad

main = runGhc (Just "/usr/lib/ghc") $ do

  flags <- getSessionDynFlags
  setSessionDynFlags flags
  imps <- mapM parseImportDecl ["import Prelude"]
  setContext (map IIDecl imps)

  runStmt "putStrLn \"1\"" RunToCompletion
  liftIO $ putStrLn "2"

使用ghc -o a.out source_file.hs -package ghc

编译

如果从终端运行,则输出

1
2

但是,如果将stdout和stderr重定向到主进程的子进程启动,则只从stdout捕获2。问题是runStmt "putStrLn \"1\"" RunToCompletion做了什么?它是否启动了新的线程/进程?它写入哪个流?

0 个答案:

没有答案