我有一個長期運行的計算,輸出一個列表。我想在計算它們時從這個列表中輸出值。什麼將是一個乾淨的方式來做到這一點?我應該如何在計算時從列表中輸出值?
目前我使用mapM_ print
將每個值打印到標準輸出。這對於將命令打印到命令行中的簡單情況來說已經足夠了,但感覺有點冒險並且很難處理。
此外,在某些時候,我想將我的命令行輸出轉換爲交互式可視化。我怎麼能把我的列表變成類似FRP事件的流?能夠將這個插入現有的GUI框架作爲事件的來源會很好。
重寫函數以使用除列表以外的其他東西是一種選擇,儘管允許我按照原樣使用列表的解決方案將是理想的選擇。
由於Haskell中的列表很懶,'mapM_'也可以很好地與它們配合使用,所以我認爲默認的解決方案非常好。只需使用'hFlush stdout'來確保輸出真的被刷新(如'mapM_(hFlush stdout << print')。 –