将美元符号表示法转换为点表示法



如何将以下内容与点符号合并为同一函数?

print $ map (`elem` Emoji.table) keywords

您可以一次稍微转换表达式:

print $ map (`elem` Emoji.table) keywords
print (map (`elem` Emoji.table) keywords)
(print . map (`elem` Emoji.table)) keywords
print . map (`elem` Emoji.table) $ keywords

当你有f $ g x时,你就有f (g x),这意味着你有(f . g) xf . g $ x。在上面的例子中,fprintgmap ('elem' Emoji.table),似乎没有什么好处可以用.来表达作曲,但在其他情况下它可能更具可读性。

例如,如果您正在编写一个无点函数:

printWithEmojis :: Keywords -> IO ()
printWithEmojis keywords = print $ map (`elem` Emoji.table) keywords

然后你也可以减少ETA-rech:

printWithEmojis :: Keywords -> IO ()
printWithEmojis = print . map (`elem` Emoji.table)
(print . map (`elem` Emoji.table)) keywords

我替换了地图运算符和列表来试用并使用

(print . map (==1)) [1..2]

print $ map (==1) [1..2]

$运算符在后面的所有内容周围添加括号,例如foo bar $ baz qux相当于foo bar (baz qux)

.运算符是组合的简写,例如(f . g) xf (g x)相同

相关内容

  • 没有找到相关文章

最新更新