Haskell输入 - 如何从stdin读取x个输入

时间:2013-11-28 05:27:31

标签: haskell io user-input

用户将输入多个案例,案例的长度,然后是案例。案件数量每次都不同。用户输入示例:

2
4
"four"
3
"the"

我需要对每种情况做一些事情,但是如何让执行do循环来匹配案例数?

这是我到目前为止所做的:

main = do
    numOfCases <- getInteger
    caseLength <- getInteger
    case <- getLine
    putStrLn $ doSomething case
    --how do I call the loop exactly once more, but this time without the numOfCases?

感谢。

1 个答案:

答案 0 :(得分:2)

使用replicateM_,它会重复一次给定的动作。您可以从Control.Monad导入它:

replicateM_ :: (Monad m) => Int -> m a -> m ()

所以你会像这样使用它:

import Control.Monad (replicateM_)

main = do
    numOfCases <- readLn
    replicateM_ numOfCases $ do
        caseLength <- readLn
        str <- getLine
        ... -- do other stuff