问题标签 [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 回答
620 浏览

c++ - C++0x 中高阶函数和 lambda 的问题

我有一个程序,在对每个组件进行一些计算之后,我必须在屏幕上打印许多 STL 向量。所以我试图创建一个这样的函数:

然后像这样使用它:

printWith不幸的是,关于我在调用中放入的 lambda 表达式的类型,我遇到了编译错误:

当然,如果我这样做:

然后printWith(foo, sumOne);按预期工作。我认为 lambda 表达式的类型将是具有推断返回类型的函数的类型。我也认为我可以在任何可以拟合正常函数的地方安装 lambda。我该如何进行这项工作?

0 投票
1 回答
275 浏览

haskell - Haskell 高阶函数问题

当前代码

我有两个功能

[Int]通过另一个函数将此函数应用于 a

错误

结论

实际上我需要的是应用f1which perform to a Intto a [Int]usingf2 这个问题可以在高阶函数中解决吗?或任何其他方法?...或者我怎样才能转换f2为更高阶的函数f1

谢谢!

0 投票
1 回答
191 浏览

haskell - 带地图的 Haskell 高阶函数

测试这是一个高阶函数,当前返回一个char值,我需要返回一个Stringas test::Int->(Int-> Char)->String

我改为功能体

错误

如何将此函数应用于带有 map 的字符串?我哪里出错了?

0 投票
1 回答
26690 浏览

matlab - 使用 ezplot 在 MATLAB 中的同一图上绘制两个函数

我想使用 ezplot() 在 MATLAB 中绘制以下三个函数,但我希望这些函数位于同一张图上以轻松解释差异。这可能吗?如果是这样怎么办?这三个功能是:

谢谢,
神秘客

0 投票
2 回答
527 浏览

perl - 在 Perl 中,确定 coderef 包的最可靠方法是什么?

我有许多高阶实用程序函数,它们接受代码引用并将该代码应用于某些数据。其中一些函数需要在子例程执行期间本地化变量。一开始,我是用来确定要本地化到哪个包中的,其方式与此示例函数caller中所示的方式类似:reduce

最初,这种技术工作得很好,但是一旦我尝试围绕高阶函数编写一个包装函数,找出正确的调用者就变得很复杂。

现在为了reduce工作,我需要类似的东西:

在这一点上,它变成了跳过哪些包的问题,​​再加上从不使用这些包中的函数的原则。必须有更好的方法。

事实证明,高阶函数作为参数的子程序包含足够的元数据来解决问题。我当前的解决方案是使用B自省模块来确定传​​入子例程的编译存储。这样,无论在代码编译和执行之间发生什么,高阶函数总是知道要本地化到的正确包。

所以我的最终问题是,这是否是在这种情况下确定调用者包裹的最佳方式?还有其他我没有想到的方法吗?我当前的解决方案是否有一些错误正在等待发生?

0 投票
6 回答
5781 浏览

c# - 锁定一个实习字符串?

更新:如果此方法不是线程安全的,这是可以接受的,但我有兴趣了解如何使其成为线程安全的。key此外,如果我可以避免它,我不想锁定所有值的单个对象。

原始问题:假设我想编写一个高阶函数,它接受一个键和一个函数,并检查一个对象是否已经用给定的键缓存。如果有,则返回缓存的值。否则,运行给定的函数并缓存并返回结果。

这是我的代码的简化版本:

另外,假设我不知道key编译时的所有可能值。

我怎样才能使这个线程安全?我知道我需要在这里引入锁定,以防止 1+ 个线程将我的条件评估为 true,但我不知道要锁定什么。我读过的许多关于锁定的示例(例如Jon Skeet 的文章)都建议使用仅用于锁定的“虚拟”私有变量。在这种情况下这是不可能的,因为在编译时密钥是未知的。我知道我可以通过为 each 使用相同的锁来轻松地使这个线程安全key,但这可能是浪费。

现在,我的主要问题是:

是否可以锁定key?字符串实习在这里有帮助吗?

在阅读了 .NET 2.0 string interning inside out 之后,我了解到我可以显式调用String.Intern()以获取从字符串值到字符串实例的 1 对 1 映射。 这个适合锁吗?我们把上面的代码改成:

上面的实现线程安全吗?

0 投票
2 回答
2202 浏览

api - 为什么 fold 在 Scala 中具有以下类型?

我正在查看为 immutable.Set 定义折叠的方式:

然而 foldLeft 被定义为:

这对我来说看起来很奇怪,至少乍一看,因为我希望 fold 能够更改它返回的集合的类型,就像 foldLeft 一样。

我想这是因为 foldLeft 和 foldRight 保证了元素折叠的顺序。fold 给的保证是什么?

0 投票
1 回答
878 浏览

haskell - 高阶函数内的多态性?

我有一个代数数据类型,其中一些构造函数具有可比较的值,而一些构造函数则没有。我编写了一些比较函数,它们的工作方式类似于标准(==)(/=)运算符,但返回Nothing用于没有意义的比较:

这行得通,但重复很笨拙——尤其是因为我实际上有更多的Variant构造函数和更多的比较函数。

我想我可以将重复因素分解为一个在比较函数上参数化的辅助函数:

但这不起作用,因为类型变量a显然不能同时绑定到Int;Float的定义中helper。GHC 将其绑定到Float,然后在处理IntValue.

直接使用时, like 函数(==)是多态的;有没有办法将它传递给另一个函数并让它保持多态?

0 投票
3 回答
308 浏览

perl - 将 Perl 的映射与自定义函数一起使用

我有一个 Perl 脚本(跳过许多不相关的行)

它运行没有错误。但是当我尝试访问数组中的值时,出现错误:

如果我删除映射,代码可以正常工作——也就是说,变量不是空字符串或空字符串。我究竟做错了什么?有没有一种很好的惯用方法来做到这一点?(按顺序进行显然是微不足道的。)

0 投票
1 回答
302 浏览

haskell - 不确定如何使用组合器设计有用的库

我一直在阅读有关组合器的文章,并看到它们有多么有用(例如,在 Haskell 的 Parsec 中)。我的问题是我不太确定如何实际使用它们。

这是问题的概要:可以生成、过滤和修改分布。可以组合分布以创建新分布。

基本接口是(在伪 Haskell 类型术语中):

现在,我认为我看到了三个组合器:

这些实际上是组合器吗?组合器是否有意义/我还缺少其他明显的组合器吗?

感谢您的任何建议。