这个问题已经在这里有了答案:
已关闭10年。
好的,我知道这:
f(g(x))
可以改写为:
f $ g(x)
并且还可以重写:
f . g(x)
我没有完全掌握的是两者在功能上不重叠的地方。我从概念上理解它们并不完全重叠,但是有人可以一劳永逸地为我澄清一下吗?
最佳答案
Prelude> :t ($)
($) :: (a -> b) -> a -> b
Prelude> :t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
$
将函数应用于值。.
包含两个功能。因此,我可以写“将f应用于(x的g)”的
f $ g x
或“将f和g的组成应用于x”的f . g $ x
。一种常见的样式是在左侧堆积点,尾随美元。原因是f $ g $ x
的含义与f . g $ x
相同,但是f $ g
表达式本身通常是没有意义的(实际上可能是类型错误),而f . g
表达式的含义是“f和g的组成”关于haskell - 。与Haskell中的$,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4876828/