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

问题描述

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

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

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

解决方法

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...