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 " ++)
之前从未见过这种语法,它是如何工作的?
答案 0 :(得分:7)
这些片段是相同的,后者只使用point free样式(也被称为“无意义的样式”)。
中心点是("Hi " ++)
是部分应用的(++)
,它在"Hi "
前面加上输入。
使用.
组合此函数(使用putStrLn
)以获得一个函数,该函数在输入之前加上“Hi”,然后将其打印出来。
这正是你更明确的lambda所做的。