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