2013-11-28 85 views
0

用户将输入多个个案,个案的长度,然后输入个案。案件数量每次都有所不同。用户输入的例子:Haskell输入 - 如何从标准输入中读取x个输入数

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? 

感谢。

回答

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 
+0

谢谢!这有帮助。 – user3025403

+0

不客气! –