问题标签 [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 投票
2 回答
238 浏览

syntax - F# 语句的语义

有人可以向我描述这个 F# 表达式吗?

val关键字是什么意思?

type -> type通常表示返回指定类型的函数是真的吗?那么是否type -> type -> type表示一个函数返回一个返回指定类型的函数呢?

0 投票
1 回答
1723 浏览

haskell - Confusion about currying and point free style in Haskell

I was trying to implement the function

which was the topic for this question. I tried to do this without explicit recursion. I came up with the following code

My function didn't work since it wasn't lazy (which was required in the question), so no upvotes there :-).

However, I did not stop there. I tried to make the function point-free so that it would be shorter (and perhaps even cooler). Since the arguments f and xs are the last ones in the expression I just dropped them:

But this did not work as expected, in fact it didn't work at all:

Why is that? I was under the impression that it was possible to simply drop trailing function arguments, which basically is what currying is about.

0 投票
1 回答
1087 浏览

visual-studio-2010 - F#:柯里化重载/元组重载问题

在将一些代码迁移到最新版本的 F#(包含在 VS2010 b1 中)时,我遇到了一个问题,我想知道是否有可用的解决方法以及 - 如果没有 - 为什么 F# 编译器的行为被修改为不支持剧情。

此代码产生以下编译时错误:

错误 FS0191:此方法的一个或多个重载具有 curried 参数。考虑重新设计这些成员以采用元组形式的参数

请注意,这曾经在 F# 1.9.6.2(9 月 CTP)上完美运行

0 投票
6 回答
10377 浏览

c - 有没有办法在 C 中进行柯里化?

假设我有一个指向函数的指针_stack_push(stack* stk, void* el)。我希望能够调用curry(_stack_push, my_stack)并取回一个只需要void* el. 我想不出办法,因为 C 不允许运行时函数定义,但我知道这里有比我聪明得多的人 :)。有任何想法吗?

0 投票
3 回答
378 浏览

ocaml - 在纯函数式 ML 中进行 N 维游走?

这个想法是遍历多个维度,每个维度都定义为一个范围

所以函数类似于fun foo y xfun foo z y x可以应用于整个正方形 X Y 或立方体 X Y*Z。

SML/NJ 不喜欢我在下面的实现:

这是代码:

这种构造甚至可能吗?

欢迎任何指针。

0 投票
1 回答
2326 浏览

ruby - 如何在 ruby​​ 中实现 curry(部分函数)

我需要一些在 ruby​​ 中实现 curry 函数的示例(1.8.6 或 1.8.7 而不是 1.9)。

0 投票
4 回答
991 浏览

c# - “Uncurrying”.NET 中的实例方法

您可以在创建时不指定实例的情况下创建实例方法的委托吗?换句话说,你能创建一个“静态”委托,它的第一个参数是应该调用该方法的实例吗?

例如,如何使用反射构造以下委托?

我知道我可以使用 methodInfo.Invoke,但这比较慢,并且在调用它之前不会检查类型正确性。

当您拥有MethodInfo特定静态方法的 时,可以使用 构造委托Delegate.CreateDelegate(delegateType, methodInfo),并且静态方法的所有参数保持自由。

正如 Jon Skeet 指出的那样,如果方法在引用类型上是非虚拟的,您可以简单地应用相同的方法来创建实例方法的开放委托。决定在虚拟方法上调用哪个方法是很棘手的,所以这不是那么简单,而且值类型看起来根本不起作用。

对于值类型,CreateDelegate表现出非常奇怪的行为:

如果实例方法属于值类型(这适用于引用类型),则作为目标对象调用CreateDelegatewith会引发绑定异常。null

几年后的一些跟进:func42(CultureInfo.InvariantCulture);导致返回"-201040128"而不是在我的示例中的错误绑定目标是"42"可能允许远程代码执行的内存损坏(cve-2010-1898);这已在 2010 年的ms10-060安全更新中得到修复。当前框架正确打印 42!这并没有使回答这个问题变得更容易,但解释了示例中特别奇怪的行为。

0 投票
0 回答
13598 浏览

functional-programming - 在函数式编程中什么是“currying”?

作为一个未重构的命令式和 OO 程序员写作...

最近搞砸了 Erlang 和 Haskell。我喜欢 Erlang,但还不确定 Haskell。函数式看起来更像数学而不是编程,希望这是有道理的。函数式编程似乎非常强大。

阅读有关 interwibble wrt 函数式编程的文档时,我经常遇到“currying”这个词。我似乎只找到了一些让我头疼的文档——很多术语没有定义。

什么是咖喱?

我一直在寻找类似的已经发布的问题,但没有找到任何东西,所以请随时将我指向已建立的线程。

0 投票
1 回答
469 浏览

grails - 使用 Curry 定义 Grails 标签

我有一个 grails 标签库 TpTagLib,我想在其中定义 4 个新标签,它们仅在一个常量值上有所不同,所以我尝试使用 curry。但是有一个例外:groovy.lang.MissingPropertyException: No such property: attr for class: TpTagLib

有谁知道为什么会发生此异常?这是代码:

0 投票
2 回答
666 浏览

operators - 有没有办法在 SML/NJ 中获得二元运算符的 Curried 形式?

例如,而不是

我宁愿有

用于

显然我可以自己做这件事,例如,

但我想确保我不会错过更优雅的方式。