Haskell desugar语法

Ori*_*Ori 2 haskell syntactic-sugar

Shuklan的Haskell讲​​座想要下面的代码:

main = do
  putStrLn "Enter name:"
  name <- getLine
  putStrLn ("Hi " ++ name)
Run Code Online (Sandbox Code Playgroud)

我提出了:

main = putStrLn "Enter name:" >> getLine >>= \str -> putStrLn ("Hi " ++ str)
Run Code Online (Sandbox Code Playgroud)

他透露:

main = putStrLn "Enter name:" >> getLine >>= putStrLn . ("Hi " ++)
Run Code Online (Sandbox Code Playgroud)

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

tha*_*guy 7

片段是相同的,后者只使用无样式(也被称为"无意义的样式").

中心点是("Hi " ++)部分应用的(++)前置"Hi "输入.

该函数由(使用.)组成,putStrLn以获得一个函数,该函数在输入之前加上"Hi",然后打印它.

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