Haskell点运算符:它究竟有什么区别?

use*_*349 3 haskell functional-programming operators

我对Haskell点运算符的问题感到困惑.我读到的是它基本上创建了一个由另外两个函数组成的新函数.例如:

f(g x) = f . g
Run Code Online (Sandbox Code Playgroud)

(省略参数)

但是,如果我只是忽略了这个点,会有什么不同?喜欢:

f . g =? f g
Run Code Online (Sandbox Code Playgroud)

因为在两种情况下g都将应用于传递给它的参数,然后f将应用于该结果.

所以我没有看到这两者之间的区别,但是可能存在差异,或者当它更复杂时会有一个差异?但我现在没有看到它,所以如果有人能帮我解决这个问题,我将不胜感激!

最好的问候,Skyfe.

Gre*_*ill 7

表达方式

h = f . g
Run Code Online (Sandbox Code Playgroud)

创建一个新函数h(...),即f(g(...)).这甚至可以在不调用的情况下完成f.然而,

h = f g
Run Code Online (Sandbox Code Playgroud)

传递gf和那对结果赋给h.在这种情况下,fh评估时调用.


chi*_*chi 6

这是他们不同的证明:

Prelude> (const . id) True False
True
Prelude> (const id) True False
False
Run Code Online (Sandbox Code Playgroud)