0
我正在練習一個問題,它在stdin上給出了文本輸入,並希望在stdout上輸出。 他們在我讀的第一行給出一個整數T,然後跟隨T行。對於T後面的幾行,我有一個函數,它接受一個整數並返回一個我必須打印的整數。所以我的輸出應該是T線。 我卡在這一點上:Haskell列陣地圖陣列
main = do
strcases <- getLine
map (calculate) [1..(read strcases)]
calculate _ = do
strp <- getLine
print $ addone (read strp)
addone x = x+1
當然,這並不此刻工作。你能展示如何打印輸出的T行嗎?
你想'mapM_'。這是monadic map函數 – bheklilr 2014-09-25 14:24:58
請參閱[這個答案](http://stackoverflow.com/questions/11403993/a-better-way-to-map-a-function-that-requires-io-over-a-list)詳細闡述。 – bheklilr 2014-09-25 14:26:03
順便說一句,你可以簡單地寫'mapM_ calculate [1..read strcases]':不需要任何括號!而'print $ read strp + 1'也可以。不過,我會在兩種情況下針對'read'提供建議,最好使用'readLn'來直接獲取正確的類型。 ('read'和'readLn'都有些不安全,它們並不能真正處理解析錯誤,但是我認爲這對於您的應用程序來說並不是真正的問題。) – leftaroundabout 2014-09-25 14:30:12