1
27
什么 你的计划可以,而不是怎么做。 在游戏中,您的程序要求用户进行猜测。正确的猜测就是赢家。否则,用户将重试。游戏将继续,直到用户猜对为止,因此我们写道:
这将使用一个组合器来重复运行一个操作(
谓词(部分应用于
在玩家猜对之前要执行的操作是
为什么不保持它的简单性,只编写这两个函数呢? *Main> :type read . getLine <interactive>:1:7: Couldn't match expected type `a -> String' against inferred type `IO String' In the second argument of `(.)', namely `getLine' In the expression: read . getLine
功能
*Main> :type read `liftM` getLine read `liftM` getLine :: (Read a) => IO a
这是一个I/O操作,当运行时,它会返回一个使用转换的值
1 Too low! 100 Too high! 42 You Win! |
2
8
您可以使用“案例”结构:
|
3
8
mattiast的case语句的一个小改进(我会编辑,但我没有karma)是使用compare函数,它返回三个值之一,LT、GT或EQ:
我真的很喜欢这些Haskell问题,我鼓励其他人发表更多。你经常会觉得 这是一种更好的表达你想法的方式,但哈斯克尔一开始是如此的陌生,以至于什么都不会出现在你的脑海中。 Haskell journyman的额外问题:什么类型的doGuessing? |
4
4
但如果允许的话,许多人更喜欢稍微不同的语法
这个
|
5
3
请注意,许多人认为必须在“do”块中缩进“then”和“else”这一事实是一个bug。它可能会在Haskell规范的下一个版本Haskell(Haskell prime)中修复。 |
6
1
还可以使用带花括号的显式分组。请参阅的布局部分 http://www.haskell.org/tutorial/patterns.html 不过我不建议这样做。除了在一些特殊情况下,我从未见过有人使用显式分组。我通常看电视 Standard Prelude code |
7
0
我使用了一种编码风格,就像您在Wikibooks中的示例一样。当然,它没有遵循C的指导原则,但是Haskell不是C,而且它相当可读,特别是当你习惯了它之后。它还模仿了许多教科书中使用的算法风格,比如Cormen。 |
8
0
您将看到Haskell的一系列不同缩进样式。如果没有设置为以任何样式精确缩进的编辑器,它们中的大多数都很难维护。 您显示的样式更简单,对编辑器的要求更低,我认为您应该坚持使用它。我能看到的唯一不一致之处是,您将第一个do放在自己的行上,而将其他do放在then/else之后。
|
trpnd · 如何定义由两个任意单声道变压器组成的单声道变压器? 2 年前 |
Fabus1184 · Haskell mapM_不打印 2 年前 |
Gotthold · 基于范数约束向量的类型 2 年前 |
jian · haskell将另一个函数用作输入参数 2 年前 |
Jocafrei · 用Haskell函数实现最大公约数函数 6 年前 |