问题标签 [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++0x 中高阶函数和 lambda 的问题
我有一个程序,在对每个组件进行一些计算之后,我必须在屏幕上打印许多 STL 向量。所以我试图创建一个这样的函数:
然后像这样使用它:
printWith
不幸的是,关于我在调用中放入的 lambda 表达式的类型,我遇到了编译错误:
当然,如果我这样做:
然后printWith(foo, sumOne);
按预期工作。我认为 lambda 表达式的类型将是具有推断返回类型的函数的类型。我也认为我可以在任何可以拟合正常函数的地方安装 lambda。我该如何进行这项工作?
haskell - Haskell 高阶函数问题
当前代码
我有两个功能
[Int]
通过另一个函数将此函数应用于 a
错误
结论
实际上我需要的是应用f1
which perform to a Int
to a [Int]
usingf2
这个问题可以在高阶函数中解决吗?或任何其他方法?...或者我怎样才能转换f2
为更高阶的函数f1
?
谢谢!
haskell - 带地图的 Haskell 高阶函数
测试这是一个高阶函数,当前返回一个char值,我需要返回一个String
as test::Int->(Int-> Char)->String
我改为功能体
错误
如何将此函数应用于带有 map 的字符串?我哪里出错了?
matlab - 使用 ezplot 在 MATLAB 中的同一图上绘制两个函数
我想使用 ezplot() 在 MATLAB 中绘制以下三个函数,但我希望这些函数位于同一张图上以轻松解释差异。这可能吗?如果是这样怎么办?这三个功能是:
谢谢,
神秘客
perl - 在 Perl 中,确定 coderef 包的最可靠方法是什么?
我有许多高阶实用程序函数,它们接受代码引用并将该代码应用于某些数据。其中一些函数需要在子例程执行期间本地化变量。一开始,我是用来确定要本地化到哪个包中的,其方式与此示例函数caller
中所示的方式类似:reduce
最初,这种技术工作得很好,但是一旦我尝试围绕高阶函数编写一个包装函数,找出正确的调用者就变得很复杂。
现在为了reduce
工作,我需要类似的东西:
在这一点上,它变成了跳过哪些包的问题,再加上从不使用这些包中的函数的原则。必须有更好的方法。
事实证明,高阶函数作为参数的子程序包含足够的元数据来解决问题。我当前的解决方案是使用B
自省模块来确定传入子例程的编译存储。这样,无论在代码编译和执行之间发生什么,高阶函数总是知道要本地化到的正确包。
所以我的最终问题是,这是否是在这种情况下确定调用者包裹的最佳方式?还有其他我没有想到的方法吗?我当前的解决方案是否有一些错误正在等待发生?
c# - 锁定一个实习字符串?
更新:如果此方法不是线程安全的,这是可以接受的,但我有兴趣了解如何使其成为线程安全的。key
此外,如果我可以避免它,我不想锁定所有值的单个对象。
原始问题:假设我想编写一个高阶函数,它接受一个键和一个函数,并检查一个对象是否已经用给定的键缓存。如果有,则返回缓存的值。否则,运行给定的函数并缓存并返回结果。
这是我的代码的简化版本:
另外,假设我不知道key
编译时的所有可能值。
我怎样才能使这个线程安全?我知道我需要在这里引入锁定,以防止 1+ 个线程将我的条件评估为 true,但我不知道要锁定什么。我读过的许多关于锁定的示例(例如Jon Skeet 的文章)都建议使用仅用于锁定的“虚拟”私有变量。在这种情况下这是不可能的,因为在编译时密钥是未知的。我知道我可以通过为 each 使用相同的锁来轻松地使这个线程安全key
,但这可能是浪费。
现在,我的主要问题是:
是否可以锁定key
?字符串实习在这里有帮助吗?
在阅读了 .NET 2.0 string interning inside out 之后,我了解到我可以显式调用String.Intern()
以获取从字符串值到字符串实例的 1 对 1 映射。 这个适合锁吗?我们把上面的代码改成:
上面的实现线程安全吗?
api - 为什么 fold 在 Scala 中具有以下类型?
我正在查看为 immutable.Set 定义折叠的方式:
然而 foldLeft 被定义为:
这对我来说看起来很奇怪,至少乍一看,因为我希望 fold 能够更改它返回的集合的类型,就像 foldLeft 一样。
我想这是因为 foldLeft 和 foldRight 保证了元素折叠的顺序。fold 给的保证是什么?
haskell - 高阶函数内的多态性?
我有一个代数数据类型,其中一些构造函数具有可比较的值,而一些构造函数则没有。我编写了一些比较函数,它们的工作方式类似于标准(==)
和(/=)
运算符,但返回Nothing
用于没有意义的比较:
这行得通,但重复很笨拙——尤其是因为我实际上有更多的Variant
构造函数和更多的比较函数。
我想我可以将重复因素分解为一个在比较函数上参数化的辅助函数:
但这不起作用,因为类型变量a
显然不能同时绑定到Int
;Float
的定义中helper
。GHC 将其绑定到Float
,然后在处理IntValue
.
直接使用时, like 函数(==)
是多态的;有没有办法将它传递给另一个函数并让它保持多态?
perl - 将 Perl 的映射与自定义函数一起使用
我有一个 Perl 脚本(跳过许多不相关的行)
它运行没有错误。但是当我尝试访问数组中的值时,出现错误:
如果我删除映射,代码可以正常工作——也就是说,变量不是空字符串或空字符串。我究竟做错了什么?有没有一种很好的惯用方法来做到这一点?(按顺序进行显然是微不足道的。)
haskell - 不确定如何使用组合器设计有用的库
我一直在阅读有关组合器的文章,并看到它们有多么有用(例如,在 Haskell 的 Parsec 中)。我的问题是我不太确定如何实际使用它们。
这是问题的概要:可以生成、过滤和修改分布。可以组合分布以创建新分布。
基本接口是(在伪 Haskell 类型术语中):
现在,我认为我看到了三个组合器:
这些实际上是组合器吗?组合器是否有意义/我还缺少其他明显的组合器吗?
感谢您的任何建议。