2
如果我運行這個程序,我沒有得到任何輸出stdout
:Haskell的IO流和`forever`不產生輸出到stdout
import Control.Monad (forever)
import qualified System.IO.Streams as S
import System.Random (randomRIO)
main :: IO()
main = do
is <- S.makeInputStream $ forever $ (randomRIO (1, 100) :: IO Int)
os <- printStream =<< S.read is
return()
printStream :: Maybe Int -> IO()
printStream Nothing = putStrLn "Nada!"
printStream (Just a) = putStrLn $ show a
我已經嘗試設置使用System.IO.hSetBuffering
緩衝,以LineBuffering
和NoBuffering
,但仍沒有輸出。我試過cat | ~/local/bin/program | cat
,但再次,標準輸出中沒有任何東西。
謝謝!我正在讀'永遠'作爲一種轉換,所以它會返回一個'IO Int'(在這種情況下),然後我可以從中提取一個值。我已將該調用移至輸出流行,並按預期工作! :) –
我一直在說他們應該把它改爲永遠:: Monad m => m() - > m Void'! – Gurkenglas
「你可以說話,直到你臉色發青......」 – pigworker