我刚开始学习Haskell,但是现在没有循环是非常令人沮丧的。我想出了如何为函数编写循环。然而,我的问题是,我想在迭代循环时输出一些结果。似乎我必须使用debug来执行这个简单的任务。
所以现在我只想举一个例子,说明如何在主结构中打印字符串10次。
换句话说,我想这样做10次:
main = do
putStrLn "a string"
谢谢。我觉得这对我的任务很有启发。
我也是Haskell的初学者,我有一个不太优雅但实用有用的解决方案。
main = do
putStr result
where
string = "a string"
result = concat [string ++ "\n" | i <- [1,2..10]]
在这里,我们定义了一个列表,其中的元素是要打印出来的字符串,后跟一个新行字符。
哈斯克尔的IO在刚开始的时候有点棘手,因为它是基于单子的。
但你的问题有一个简单的解决方案:
main = replicateM_ 10 $ putStrLn "a string"
这是使用控件中的
replicateM_
组合器。Monad
它有许多有用的函数来组成和执行一元动作。
您可以定义一个递归函数,它可以打印n次“字符串”(n是函数的参数),如下所示:
printStringNTimes 0 = return ()
printStringNTimes n =
do
putStrLn "a string"
printStringNTimes (n-1)
main = printStringNTimes 10
一种更通用的方法是定义一个函数,该函数可以将任何IO操作重复n次:
repeatNTimes 0 _ = return ()
repeatNTimes n action =
do
action
repeatNTimes (n-1) action
main = repeatNTimes 10 (putStrLn "a string")
上述函数已经存在于Control. Monad
中,名称为replicateM_
。
主要内容:使用Haskell函数编程,Hello Word程序Haskell是一种函数式编程语言,专门设计用于处理符号计算和列表处理应用程序。函数式编程基于数学函数。除了Haskell,其他遵循函数式编程范式的其他流行语言包括:Lisp,Python,Erlang,Racket,F#,Clojure等。 在常规编程中,指令视为采用特定语法或格式的一组声明,但是在函数式编程下,所有计算都视为独立数学函数的组合。 使用Haskell函数编程 Haskell是一种
我是哈斯克尔的新手,如果有人愿意帮助我,我会很高兴的!我正在尝试让这个程序使用do-while循环。 第二个getLine命令的结果被放入变量goGlenn中,如果goGlenn不等于“start ”,那么程序将返回起点
我刚开始使用Haskell,希望在不安装额外库的情况下制作一个简单的实时游戏。我需要写一个循环,扫描键盘输入,但如果没有输入,游戏也必须运行。我该怎么做?
问题内容: 目前,我正在为Java测试学习。在学习期间,我遇到了一个小问题。 在此for循环中: 输出为: 我的问题是,我不了解。当我阅读这段代码时,我一直认为它应该看起来像这样: 为什么不是这样? 问题答案: i的每次迭代都将开始j的全新迭代。 因此,从i == 1开始,然后在循环中j == 1,2,3。然后i == 2,然后j == 1,2,3循环,依此类推。 一次一步地执行它,这将是有意义的
我已经有几年没有编写代码了,一直在编写简单的Java程序来重新熟悉基本原理。然而,我很难让我的do-while循环按照我想要的方式运行。我想我并不完全理解do-while循环是如何工作的,但我想要的是从System.in中收集作为int的用户输入,并在他们输入其他数据表单时继续请求有效的int输入。我所拥有的是: 这不起作用有两个原因。首先,如果我输入一个非int值,它会立即崩溃,引发输入不匹配异