问题标签 [currying]

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 投票
3 回答
6002 浏览

python - 映射函数到numpy数组,改变参数

首先,让我向您展示codez:

我在这里所做的是尝试应用于func数组,每次更改func第二个参数的值。这太慢了(每次迭代都创建一个新函数肯定无济于事),我也觉得我错过了 Python 的做法。有什么建议吗?

给我一个二维数组的解决方案是个好主意吗?我不知道,但也许是这样。

对可能问题的回答:

  • 是的,这是(使用广义定义),一个优化问题(do_something_else()隐藏这个)
  • 不, scipy.optimize 没有奏效,因为我正在处理布尔值并且它似乎永远不会收敛。
0 投票
5 回答
1552 浏览

f# - F# 中的柯里化是什么?

可能重复:
函数式编程:柯里化

我在这里阅读免费的 F# Wikibook:

http://en.wikibooks.org/wiki/F_Sharp_Programming

有一节解释什么是偏函数。它说使用 F# 你可以部分使用一个函数,但我就是不明白发生了什么。考虑以下用作示例的代码片段:

输出是 11。但我没有关注。我的函数“add5ToNumber”不要求提供参数,那么为什么我可以调用它并给它一个参数?

这些天我真的很喜欢学习 F#,宝贝步骤!

0 投票
3 回答
5026 浏览

ruby - Ruby 中的简单柯里化

我正在尝试在 ruby​​ 中进行一些柯里化:

我得到错误

来自 func_test.rb:24:in `'

但如果我这样做

它似乎工作。但是通过在使用 lambda 分配后打印 plus 两种方式都返回相同类型的对象。我误解了什么?

0 投票
2 回答
379 浏览

haskell - Haskell 中的函数柯里化

我有一个功能:

示例操作系统用法:

我有两个问题。首先 - 为什么它不起作用:

我想得到 [2, 2]。

第二个问题。我试图创建 pariatl 函数。像这样的东西:

以这种方式使用它:

但我收到错误消息:

这里充满了可能的代码:

powerOf 返回 num 中 p 的最大幂。例如:100 = 2 * 2 * 5 *5,所以 powerOf 100 2 = 2。10 = 2 * 5,所以 powerOf 10 2 = 1。

如何修复错误?谢谢。

0 投票
3 回答
1329 浏览

haskell - 咖喱语言的 CPS

像 lambda calculus 或 Ocaml 这样的柯里化语言中的CPS有什么意义?从技术上讲,所有函数都有一个参数。假设我们有一个 CPS 版本的加法,用一种这样的语言:

我们称之为

这与以下内容相同:

我已经看到那里有两个不是尾调用的调用,实际上是一个复杂嵌套的表达式,它(cps-add random-continuation)返回一个值,即一个消耗一个数字的函数,然后返回一个消耗另一个数字的函数,然后将两者的总和传递给那个random-continuation。但是我们不能通过简单地将它再次转换为 CPS 来解决这个返回值,因为我们只能给每个函数一个参数。我们需要至少有两个来为延续和“实际”论证腾出空间。

还是我完全错过了什么?

0 投票
1 回答
1649 浏览

scala - 如何在 scala 中使用泛型创建部分函数?

我正在尝试为 Scala 编写性能测量库。我的想法是透明地“标记”部分,以便可以收集执行时间。不幸的是,我无法根据自己的意愿来弯曲编译器。

一个公认的人为的例子,说明了我的想法:

现在,这是我得到的最远的:

直接使用该time函数并且编译器正确使用匿名函数的返回类型来键入“时间”函数:

看起来很棒,但这种模式有许多缺点:

  • 强制用户在每次调用时重复使用相同的符号
  • 使执行更高级的事情变得更加困难,例如预定义的项目级计时器
  • 不允许库初始化一次'timerBigString 的数据结构

所以这里出现了 mkTimer,这将允许我部分应用时间函数并重用它。我像这样使用 mkTimer:

但我得到一个编译器错误:

如果我内联柯里化,我会得到同样的错误:

如果我这样做,这有效val timerBigString = time('timerBigString) (_: String),但这不是我想要的。我想将部分应用函数的输入推迟到应用程序。

我的结论是,当我第一次创建部分函数时,编译器正在决定它的返回类型,选择“Nothing”,因为它无法做出更明智的选择。

所以我想我正在寻找的是一种部分应用函数的后期绑定。有没有办法做到这一点?或者也许我可以走一条完全不同的道路?

好吧,谢谢你读到这里

-teo

0 投票
5 回答
29355 浏览

scala - 为什么 Scala 同时提供多个参数列表和每个列表的多个参数?

多个参数列表,例如def foo(a:Int)(b:Int) = {}每个列表的多个参数,例如,def foo(a:Int, b:Int) = {}据我所知,在语义上是等效的,并且大多数函数式语言只有一种声明多个参数的方式,例如 F#。

我能弄清楚支持这两种函数定义风格的唯一原因是允许使用只有一个参数的参数列表进行类似语法的语言扩展。

现在可以使用语法外观调用

但是,可以有其他方法来支持使用花括号,而无需多个参数列表。

一个相关的问题:为什么在 Scala 中使用多个参数列表称为“currying”?柯里化通常被定义为一种为了支持部分应用而使 n 元函数一元的技术。但是,在 Scala 中,可以部分应用一个函数,而无需制作该函数的“curried”(多个参数列表,每个参数列表,每个参数列表)版本。

0 投票
4 回答
1147 浏览

c++ - qt 插槽柯里化

有没有办法咖喱qt插槽?也许有类似curryng的东西?

0 投票
1 回答
4552 浏览

php - PHP 致命错误:从上下文“”调用受保护的方法 FormValidator::setError()

考虑我的可怜的班级:

我在这样的实现类中使用它:

这会导致以下错误:

问题:有没有办法让闭包“继承”类上下文?

0 投票
10 回答
4961 浏览

haskell - 柯里化函数的实际使用?

有大量关于如何 curry 函数的教程,以及在 stackoverflow 上的许多问题。然而,在阅读了 The Little Schemer、几本书、教程、博客文章和 stackoverflow 线程之后,我仍然不知道这个简单问题的答案:“currying 有什么意义?” 我确实了解如何咖喱功能,而不是“为什么?” 在它后面。

有人可以向我解释一下柯里化函数的实际用途(在每个函数只允许一个参数的语言之外,其中使用柯里化的必要性当然非常明显。)

编辑:考虑到 TLS 的一些例子,有什么好处

我只能看到更多代码而没有增加灵活性......