(.)点和美元符号有什么区别($)?
(.)
($)
据我了解,它们都是不需要使用括号的语法糖。
$运算符用于避免括号。在它之后出现的任何东西都将优先于之前出现的任何东西。
$
例如,假设您有一行内容为:
putStrLn (show (1 + 1))
如果你想去掉这些括号,下面的任何一行也可以做同样的事情:
putStrLn (show $ 1 + 1) putStrLn $ show (1 + 1) putStrLn $ show $ 1 + 1
运算符的主要目的.不是避免括号,而是链接函数。它使您可以将右侧出现的任何内容的输出与左侧出现的任何内容的输入联系起来。这通常也会导致更少的括号,但工作方式不同。
.
回到同一个例子:
(1 + 1)
show
Int
String
putStrLn
IO ()
你可以show像putStrLn这样链接:
(putStrLn . show) (1 + 1)
如果您喜欢的括号太多,请使用$运算符删除它们:
putStrLn . show $ 1 + 1