Aug*_*son 5 haskell program-entry-point do-notation
在java中我们总是写:
public static void main(String[] args){...}
Run Code Online (Sandbox Code Playgroud)
当我们想要开始编写程序时.
我的问题是,对于Haskell,IE是否相同:我是否总是可以确定声明:main = do,当我想在Haskell中为程序编写代码时?
例如:
main = do
putStrLn "What's your name?"
name <- getLine
putStrLn ("Hello " ++ name)
Run Code Online (Sandbox Code Playgroud)
该程序将询问用户"你叫什么名字?" 然后,用户输入将存储在name-variable中,并且在程序终止之前将显示"Hello"++名称.
Wil*_*sem 11
简短的回答:不,我们必须宣布一个main =,但不是一个do.
本main必须是一个IO单子类型(所以IO a),其中a是任意的(因为它被忽略),因为是写在这里:
名称的使用
main很重要:main被定义为Haskell程序的入口点(类似于mainC中的函数),并且通常必须具有IO类型IO ().
但你没有必要需要do注释.其实do是语法糖.main事实上你是:
main =
putStrLn "What's your name?" >> getLine >>= \n -> putStrLn ("Hello " ++ n)
Run Code Online (Sandbox Code Playgroud)
或者更优雅:
main = putStrLn "What's your name?" >> getLine >>= putStrLn . ("Hello " ++)
Run Code Online (Sandbox Code Playgroud)
所以这里我们写了一个main没有do注释.有关desugaring do符号的更多信息,请参阅此处.
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |