【发布时间】:2013-04-14 21:11:02
【问题描述】:
我刚开始学习 Haskell,但是现在没有循环是非常令人沮丧的。我想出了如何为函数编写循环。但是,我的问题是我想在迭代循环时输出一些结果。看来我必须使用调试来执行这个简单的任务。
所以现在我只需要一个示例,说明如何在主结构中打印 10 次字符串。
也就是说,我想这样做 10 次:
main = do
putStrLn "a string"
谢谢。我觉得这对我的任务很有启发性。
【问题讨论】:
-
这里要回答的真正问题是,当您想在函数式语言中执行“循环”时,您会使用递归。唯一令人讨厌的是,如果您查看它:类型不对齐,因为 monad 构造函数(在本例中为 IO)。因此,您需要一个递归结构来“拼接”单子绑定。换句话说,这只是递归,处理 Haskell 处理 IO 的“特殊”方式略有不同。
-
即使我是 Haskell 的初学者,但我想分享一下我所获得的一些见解。有人告诉我,当你想在 Haskell 中做循环时,可以考虑递归或列表推导。此处与您的问题无关,但假设您要在列表中添加所有元素。当然,您需要遍历所有元素。递归将起作用,使用列表推导也是如此。
-
@JohnRed 我不认为你可以用 LC 总结一个列表。 LC 基本上就是
flatMap。