gpt4 book ai didi

haskell - Haskell 中的 main 函数是否总是以 main = do 开头?

转载 作者:行者123 更新时间:2023-12-04 16:58:05 24 4
gpt4 key购买 nike

在java中,我们总是写:

public static void main(String[] args){...}

当我们想开始编写程序时。

我的问题是,对于 Haskell,IE 是否也一样:我可以始终确保声明:
main = 做,当我想在 Haskell 中为程序编写代码时?


例如:
main = do  
putStrLn "What's your name?"
name <- getLine
putStrLn ("Hello " ++ name)

该程序将询问用户“你叫什么名字?”
然后,用户输入将存储在名称变量中,并且
"Hello"++ 名称将在程序终止前显示。

最佳答案

简答 : 没有 ,我们必须声明一个 main = ,但不是 do .

main必须是 IO monad 类型 (所以 IO a )其中 a是任意的(因为它被忽略了),如 here 所写:

The use of the name main is important: main is defined to be the entry point of a Haskell program (similar to the main function in C), and must have an IO type, usually IO ().



但是你不需要 do符号。其实 do is syntactical sugar .您的 main实际上是:
main =
putStrLn "What's your name?" >> getLine >>= \n -> putStrLn ("Hello " ++ n)

或者更优雅:
main = putStrLn "What's your name?" >> getLine >>= putStrLn . ("Hello " ++)

所以这里我们写了一个 main没有 do符号。有关脱糖的更多信息 do符号,见 here .

关于haskell - Haskell 中的 main 函数是否总是以 main = do 开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44727803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com