|
|
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之后。
|
|
|
metrallador10 · 哪种代码更好?效率与代码可读性 2 年前 |
|
|
Justin Xu · 使用return if语句进行重构验证 2 年前 |
|
|
Cino · 如何以体面的方式处理Python异常? 3 年前 |
|
|
SAI BENDE · 如何在多个html文件中使用单个导航栏 3 年前 |
|
|
fstab · 对正常控制流程使用例外情况是一种不鼓励还是不鼓励的做法? 12 年前 |
|
|
SwampYeti · 在CSS中拉伸小背景图像 13 年前 |