【发布时间】:2015-05-24 06:07:31
【问题描述】:
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 " ++)
以前从未见过这种语法,它是如何工作的?
【问题讨论】:
-
其实你的风格在绑定的变量方面更准确,但它可以写成任何一种方式。
-
您的版本是正确的脱糖版本。给定的答案做了额外的工作。
-
脱糖不执行无点转换。将
\str -> putStrLn ("Hi " ++ str)替换为putStrLn . ("Hi " ++)是脱糖规则中未指定的额外工作。