问题标签 [higher-order-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 重命名高阶列表操作的基本原理
在 C# 中重命名高阶列表操作的基本原理是什么?(例如:map
-> Select
、filter
-> Where
、fold
-> Aggregate
)
python - 将高阶函数从 Python 转换为 Haskell
我有以下代码:
重要部分:Pleat 接受任何函数和任何序列,并将该序列中的前几个元素作为参数传递给接收到的函数。
有没有办法在 Haskell 中做到这一点,还是我在做梦?
search - 如何在搜索树上定义地图和折叠?
我有一个定义为的搜索树:
我必须定义两个函数,mapStree:
和折叠树:
我不完全了解发生了什么,也不知道该怎么做。
scala - Scala编译器说我的方法是递归的,以防使用隐式和匿名类
我希望能够编写类似的代码
所以我想我可以用隐式来做到这一点。
当我在 Scala REPL 中执行以下代码时,它被正确定义
但是,当我尝试编译时,
它失败并出现错误
有什么区别?我究竟做错了什么?
c# - 函数式 C# - 使用或返回 Action 的
浏览网络以在 C# 中更好地处理故障,我已经了解了以下实现策略。第一个对我来说很自然,而另一个实现我不确定它的优点是什么?
1)
2)
2) 是在 C# 中开发高阶函数时的首选策略吗?
而且,我想知道,如果一种方法比另一种更有效。
c# - 如何在 C# 中为高阶函数定义参数名称
在 C# 中,可以创建高阶函数,即。以函数g
为参数的函数。假设我想创建这样一个函数,它给出一个函数f
并返回另一个扩展其功能的函数。如何为返回的增强方法定义参数名称?动机是,我一般都在使用更高阶的方法,其中一些会产生新的方法。这些可能很难使用,因为它们没有附加参数名称等。
说明如何在 C# 中分别定义g
和定义的示例:f
我定义了一个方法 Extend,它可以扩展以 aT
作为参数并返回一个S
.
然后我们可以在我们的类上扩展一个方法而不改变方法。
唉,参数名称positiveNumber
不再可用,因为唯一可用的信息是Func<int, int> Calc
. 那是当我通过键入来使用扩展方法时new Calc2().Calc(-1)
,IDE 没有任何帮助,实际上我的论点是错误的。
如果我们可以定义 adelegate
并将其转换为 this 那就太好了,但是,这是不可能的。
有什么建议么?
functional-programming - OCaml 中的折叠树
如您所知,OCaml 中有更高阶的函数,例如 fold_left、fold_right、filter 等。
在我的函数式编程课程中,引入了名为 fold_tree 的函数,它类似于 fold_left/right,不是在列表上,而是在(二叉树)树上。它看起来像这样:
其中树定义为:
好的,这是我的问题: fold_tree 函数是如何工作的?你能给我一些例子并用人类语言解释吗?
language-agnostic - 这个高阶函数有名字吗?
我在我的代码和库中随处可见这种模式,但似乎没有我可以在任何地方找到的名称或抽象。
示例(伪代码)
基本上:取一个值,以及一个转换该值的函数。制作该值的副本,对其进行转换并返回它。
现实生活中的例子(C++)
基本上,您有一个就地功能(有副作用)并从中制作了一个不合时宜的功能(没有副作用)。
这种模式有名字吗?您知道使用它的任何库或语言吗?显然函数式语言不会使用它,因为它们一开始就没有引用不透明的函数。
higher-order-functions - 具有高阶函数的 Web 编程
我们正在课堂上学习高阶函数,我们的教授提到它们对 Web 编程很有用。我不确定在什么情况下这是正确的,并且想知道是否有人在一些常见的 Web 编程任务中对高阶函数有任何经验,以及它们在什么情况下有用。
我通读了我们的书,但没有提到网络编程,我想这只是教授提到的题外话,但它激发了我的兴趣。
谢谢!
types - 高阶函数的类型
如果我为高阶函数指定(我认为)正确的类型,OCaml 编译器会拒绝该函数的第二次使用。
编码
导致以下错误消息
所以第一次使用f
似乎将其第一个参数的类型固定为int -> string
. 我能理解。但我没有得到的是省略类型限制来f
解决问题。
转移f
到全局范围也解决了这个问题:
为什么第一个示例不编译而后面的示例编译?