打扰一下,如果这是一个非常愚蠢的问题,但是我已经阅读了一本书,而且大部分关于Haskell的书已经出现了,并且似乎不记得这个问题。
我如何做同样的事情n次?如果你想知道我在做什么,我试图做一些Google Code Jam问题来学习Haskell,输入的第一行为你提供测试用例的数量。既然如此,我需要做n次同样的事情,其中n是测试用例的数量。
到目前为止,我能想到的唯一方法是编写一个这样的递归函数:
recFun :: Int -> IO () -> IO ()
recFun 0 f = do return ()
recFun n f = do
f
recFun (n-1) f
return ()
是否还没有内置功能?
答案 0 :(得分:5)
forM_
的 Control.Monad
是一种方式。
示例:
import Control.Monad (forM_)
main = forM_ [1..10] $ \_ -> do
print "We'll do this 10 times!"
请参阅此处的文档
http://hackage.haskell.org/package/base-4.8.0.0/docs/Control-Monad.html#v:forM-95-