小编典典

和有什么区别。(点)和 $(美元符号)?

all

(.)点和美元符号有什么区别($)

据我了解,它们都是不需要使用括号的语法糖。


阅读 127

收藏
2022-03-02

共1个答案

小编典典

$运算符用于避免括号。在它之后出现的任何东西都将优先于之前出现的任何东西。

例如,假设您有一行内容为:

putStrLn (show (1 + 1))

如果你想去掉这些括号,下面的任何一行也可以做同样的事情:

putStrLn (show $ 1 + 1)
putStrLn $ show (1 + 1)
putStrLn $ show $ 1 + 1

运算符的主要目的.不是避免括号,而是链接函数。它使您可以将右侧出现的任何内容的输出与左侧出现的任何内容的输入联系起来。这通常也会导致更少的括号,但工作方式不同。

回到同一个例子:

putStrLn (show (1 + 1))
  1. (1 + 1)没有输入,因此不能与.运算符一起使用。
  2. show可以取 aInt并返回 a String
  3. putStrLn可以取 aString并返回 a IO ()

你可以showputStrLn这样链接:

(putStrLn . show) (1 + 1)

如果您喜欢的括号太多,请使用$运算符删除它们:

putStrLn . show $ 1 + 1
2022-03-02