gpt4 book ai didi

javascript - 功能还原的理解

转载 作者:行者123 更新时间:2023-12-01 22:57:21 26 4
gpt4 key购买 nike

这个 functional programing book 中有几个例子关于不同功能之间的等价性。例如,如果我的理解是正确的,则意味着:

func(param => otherFunc(param))
func(otherFunc) // simplified

而且,如果我能尽我所能用文字表达出来,我会说:

A function that takes a certain number of parameters and then onlyreturns a second function called with those parameters as argumentsis the same as a function that just takes the second function as a single parameter.

这样理解对吗?有哪些例子可以说明这是如何工作的?目前我自己能想到的都比较琐碎,所以我想看看我能不能看到更多的例子来加深我对这方面的一些应用的理解。

最佳答案

在作为许多函数式编程概念基础的 lambda 演算中,这称为 Eta 归约,是系统中为数不多的基本归约运算之一。

η-减少
LC: λx.f x = f
Javascript:(x => f(x)) = f

向自己证明这行得通非常简单。将函数“包装”在 lambda 中只是显式地提供了无论如何都会应用的下一个参数。

为了简洁起见,假设我们在教堂编码中有一个增量函数 INC 和 LC 数字。
LC: (λx.INC x) 3 -> INC 3 -> 4 = INC 3 -> 4
Javascript:(x => INC(x))(3) -> INC(3) -> 4 = INC(3) -> 4

如果你有一个多参数函数,这会有点问题。由于纯 lambda 演算只有一元函数,减少 eta 就这么简单,但在 JS 中我们可以使用技巧来捕获任意数量的参数。

JS“Eta”等价
((...x) => f(...x)) = f

至于应用,你可以利用这个事实来简化表达式。除此之外,没有理由以这种方式扩展表达式,只是为了性能和可读性而减少它们。

是的,这些是等价的,这实际上是你发现的一个核心函数式编程原则。

关于javascript - 功能还原的理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72733927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com