关于 do 的使用疑问
- doGuessing num = do
- putStrLn "Enter your guess:"
- guess <- getLine
- case compare (read guess) num of
- LT -> do putStrLn "Too low!"
- doGuessing num
- GT -> do putStrLn "Too high!"
- doGuessing num
- EQ -> do putStrLn "You Win!"
复制代码
do 的作用是保证多个 action 顺序执行
以上代码中, case 表达式中的 EQ 分支 "->" 后的 do 可有可无
从这是否可以判断:当只有一个 action 时,do 不起作用 ?
就像 hello world 程序
- main = putStrLn "Hello world!
复制代码
顺便问一下:return 函数是否为 action ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
real world haskell 中讲 monad 那章有 do 糖的原理。那章还有段如果不理解 do 的原理是无法解释的代码……
有,例如字符串。要想完整了解,可以看下 Haskell 98 Report
除了
[List], do , 缩进
haskell 还有其他语法糖吗?
对!
do 就是语法糖。
缩进也是语法糖。
大括号可以代替缩进。
Haskell 的布局既可以用大括号,也可以用缩进和对齐。
do 是语法糖吗?
不是太了解
do {e} => e
在给的例子中 do 后并没有大括号呀?
难道缩进转化为大括号
[ 本帖最后由 izhier 于 2009-4-7 12:54 编辑 ]
do 记法的翻译规则第一条就是:
至于 return 的类型,
你 :t return 就可以看到: