用户将输入多个案例、案例的长度,然后输入案例。病例的数量每次都有所不同。用户输入示例:
2
4
"four"
3
"the"
我需要对每个案例都做些什么,但我如何让execute 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?
谢谢。
使用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