问题标签 [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.

0 投票
4 回答
595 浏览

haskell - Haskell 什么时候需要 lambda 形式?

我是 Haskell 的新手,也是函数式编程的新手。在其他(除了 Haskell)语言中,lambda 形式通常非常有用。

例如,在方案中:

将创建一个闭包(在函数 f 上)以逼近一个导数(在值 x 处,间隔为 h)。然而,由于它的部分应用,在 Haskell 中似乎不需要这种 lambda 形式的使用:

在 Haskell 中有哪些需要 lambda 形式的例子?

编辑:用“lambda 形式”替换“闭包”

0 投票
3 回答
111 浏览

function - 一些编程语言如何区分函数和函数指针?

我主要谈论的是函数式编程语言。例如,关于map的 wikipedia 文章有这个用 Haskell 语言编写的示例:

map square [1,2,3,4,5]

解析器/编译器如何知道我们想要将函数作为高阶函数传递,而不是试图调用函数本身squaremap对于具有静态类型的语言,表达式square [1,2,3,4,5]显然不会编译,但编译器真的会使用它来确定这不是我的意思吗?

或者,这只是 Wikipedia 中的一个坏例子,而一个更好的例子可能看起来像map &square [1,2,3,4,5](使用 C 风格的函数引用)?

0 投票
1 回答
260 浏览

ruby - 将块传递给Ruby中的方法

我想将生成的(高阶函数)传递给 ruby​​ 方法的方法。像这样的东西

我收到一条错误消息

我怎么能完成这样的事情?

0 投票
7 回答
48553 浏览

python - 如何重复一个函数n次

我正在尝试在 python 中编写一个函数,如下所示:

其中f是一个接受一个参数并且n是一个正整数的函数。

例如,如果我将 square 定义为:

我打电话给

这将平方 3、2 次。

0 投票
4 回答
275 浏览

python - 我正在尝试编写一个用于在序列中添加/相乘项的通用函数

我正在尝试在 python 中编写一个带有 4 个参数的函数

其中 operation 是一个函数,start 是序列的开始编号,n 是序列的最后一个编号,term 是操作序列中各项的函数。

例如

将返回 2、3、4、...、10 的平方和

鉴于:

0 投票
4 回答
3933 浏览

python - python中序列中前n项的乘积

我正在尝试创建一个函数,它接受一个参数(一个数字)并返回该数字的阶乘。

例如 f(5) 将返回 1*2*3*4*5

到目前为止我所拥有的是

但是,是否有可能使该术语仅需要 1 个参数?

0 投票
2 回答
9040 浏览

recursion - 使用 fold_left/right 反转 OCaml 中的列表

更新 - 解决方案

感谢 jacobm 的帮助,我想出了一个解决方案。


我正在学习 OCaml(用于类)中的不同递归方式,并且为了一些练习,我正在编写一个函数来使用不同的递归样式来反转列表。

现在,我正在尝试编写一个反向函数,List.fold_left但我被卡住了,无法弄清楚。我将如何使用折叠来编写这个反向函数?

此外,如果有人对函数式编程、不同类型的递归、高阶函数等有很好的参考,将不胜感激链接:)

0 投票
5 回答
7551 浏览

function - 重复应用一个函数,直到结果稳定

我想重复应用一个函数simplify',直到结果“稳定”(即simplify'(x) == x):

这对我来说似乎是一个普遍的问题。有没有更优雅的解决方案?

更新:我找到了一个更简单的解决方案,但我仍在寻找更优雅的解决方案:)

0 投票
2 回答
949 浏览

scala - 在预期函数的地方使用构造函数

有两个简单的类Int作为参数:

我可以说:

哪个工作正常,相当于更详细一点:

但是Bar(因为它不是案例类?)不能在同一个构造中使用:

是否有一些特殊的语法来引用任何构造函数并利用 eta 扩展?List(1,2,3) map {new Bar(_)}Foo.

0 投票
8 回答
73093 浏览

scala - Scala中foldLeft和reduceLeft之间的区别

foldLeft我已经了解和之间的基本区别reduceLeft

左折叠:

  • 必须传递初始值

减少左:

  • 将集合的第一个元素作为初始值
  • 如果集合为空,则抛出异常

还有其他区别吗?

有两种具有相似功能的方法的具体原因吗?