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.
表达方式
h = f . g
Run Code Online (Sandbox Code Playgroud)
创建一个新函数h(...),即f(g(...)).这甚至可以在不调用的情况下完成f.然而,
h = f g
Run Code Online (Sandbox Code Playgroud)
传递g到f和那对结果赋给h.在这种情况下,f在h评估时调用.
这是他们不同的证明:
Prelude> (const . id) True False
True
Prelude> (const id) True False
False
Run Code Online (Sandbox Code Playgroud)