Converting dollar sign notation to dot notation
我如何用点符号把下面的内容变成同一个函数?
- 你可以想到一个$有效地说,把这之后的一切放在一组括号里。
- 我已经删除了你的问题中有一部分不适合这个网站的主题(偏好和意见变化很大);另一半在我看来不是一个好问题,但至少在主题上,所以这样你的问题就不太可能被关闭。
您可以一次转换一点表达式:
当你有f $ g x时,你有f (g x),也就是说你有(f . g) x或f . g $ x。在上面的例子中,当f是print和g是map ('elem' Emoji.table)时,用.表示成分似乎没有什么好处,但在其他情况下可能更易读。
例如,如果编写的是无点函数:
1 2
| printWithEmojis :: Keywords -> IO ()
printWithEmojis keywords = print $ map (` elem` Emoji.table ) keywords |
然后您还可以预计到减少:
1 2
| printWithEmojis :: Keywords -> IO ()
printWithEmojis = print . map (` elem` Emoji.table ) |
我替换了地图操作员和列表来尝试并使用
(print . map (==1)) [1..2]
和
print $ map (==1) [1..2]
$运算符在后面的所有内容周围添加括号,例如,foo bar $ baz qux等于foo bar (baz qux)。
.运算符是组成的简写,如(f . g) x与f (g x)相同。