Haskell desugar语法

时间:2015-03-20 18:12:46

标签: haskell syntactic-sugar

Shuklan的Haskell Lecture想要下面的代码:

main = do
  putStrLn "Enter name:"
  name <- getLine
  putStrLn ("Hi " ++ name)

我想出了:

main = putStrLn "Enter name:" >> getLine >>= \str -> putStrLn ("Hi " ++ str)

他透露:

main = putStrLn "Enter name:" >> getLine >>= putStrLn . ("Hi " ++)

之前从未见过这种语法,它是如何工作的?

1 个答案:

答案 0 :(得分:7)

这些片段是相同的,后者只使用point free样式(也被称为“无意义的样式”)。

中心点是("Hi " ++)是部分应用的(++),它在"Hi "前面加上输入。

使用.组合此函数(使用putStrLn)以获得一个函数,该函数在输入之前加上“Hi”,然后将其打印出来。

这正是你更明确的lambda所做的。