你好世界在Haskell

时间:2019-01-12 09:05:20

标签: haskell

此代码来自在线教程,但并未真正说明此打印“ Hello,World”的haskell代码背后的逻辑。您能解释一下这里到底发生了什么吗?我对最后一行中发生的事情以及它如何打招呼感到非常困惑= Hello。为什么需要“谁”?有什么意义?以及为什么不只是设置为“ hello”。我应该从这段代码中学到什么?请原谅我,因为我刚刚进入函数式编程世界,我认为显而易见的事情飞到了我的头上。

main :: IO () 

main = putStrLn (greet "World") 

greet who = "Hello, " ++ who

2 个答案:

答案 0 :(得分:3)

在问题的各行之间阅读,听起来就像是在阅读

(greet "World")

将字符串greet"World"串联在一起。但是在Haskell中,这是编写函数调用及其参数的方式。诸如C或Java之类的语言会将其写为

greet ("World")

在Haskell中,括号不用于函数参数;相反,它们仅用于操作员优先级。 “函数应用程序”(意味着在某些参数上调用函数)的行为类似于具有最高优先级的不可见运算符。

答案 1 :(得分:2)

如果您查看此功能的签名,可能会有所帮助。这是在函数greet接受String并输出String的情况下读取的。 String类型只是[Char]

的简写
greet :: String -> String
greet who = "Hello, " ++ who

是一个带有一个参数who的函数。 ++运算符可以附加两个列表,并且由于字符串是Haskell中的字符列表,它将像这样附加列表:

['H', 'e', 'l', 'l', 'o', ',', ' '] ++ ['W', 'o', 'r', 'l', 'd']
相关问题