【发布时间】:2014-12-04 19:57:26
【问题描述】:
我无法理解函数组合运算符在 Haskell 中的工作原理。我在简单的情况下理解它,您只使用带有一个参数的函数,但我不明白当您在多个函数上使用它时会发生什么,每个函数都带有多个参数。
考虑这个函数:
f1 = (*) . (+) 2 $ 1
这个函数所做的只是它接受一个数字并将其乘以三,因此它与以下内容相同:
f2 = (*) $ (+) 2 1
和
f3 = (*) 3
我完全了解 f2 中发生了什么,但我不明白 f1 中发生了什么,这使得两者相同。 (.) 接受两个函数和一个值,每个函数只能接受一个参数,因此在这种情况下,必须同时部分应用 (*) 和 (+) 才能使事情正常工作。我不明白它们适用于什么以及如何通过函数链发送。
在 f2 中,(+) 首先应用于两个函数,产生一个部分应用于 (*) 的值,从而创建一个函数。在 f1 中,不可能将 (+) 分配给两个值,因为 (.) 需要一个函数作为输入,但它们是相同的。这个我不明白。
我希望您能理解我在理解方面遇到的问题。提前致谢!
【问题讨论】:
-
加入俱乐部!有些人真的很擅长理解这些奇怪的函数组合。我们中的一些人没有那么多。从长远来看,我没有发现它是一个大障碍,所以我不会太担心这个......
-
我其实不在乎那么多,我的教授在乎 ;)
标签: haskell function-composition