问题标签 [partial-application]

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 回答
803 浏览

scala - 为什么scala不能在部分方法中推断类型?

看这个例子:

它无法编译,我需要将类型添加到部分方法中:

为什么scala不知道方法的第二个参数helloString

0 投票
3 回答
147 浏览

scala - 从选项中的类型方法生成部分应用的函数

假设我正在编写一个 GUI

在此处输入图像描述

该框架有一个当前 Kitteh 的字段,这是Option因为它可能尚未定义,或者用户可能试图创建一个无效的:

现在我想Kitteh在用户点击创建时安全地创建一个

我的 GUI 有两个按钮可以做类似的事情。在psedocode中,它们都应该

不要担心细节:关键是因为存在代码重复,我想创建一个可以从两个按钮调用的通用方法。唯一的区别是需要执行的 Kitteh 上的方法。

现在如果currentKitteh不是 a Option,通用方法可以有一个签名,如

例如,我可以打电话

但由于它实际上是一个选项,我该如何实现呢?

我可以检查是否定义了 currentKitteh,并在为每个按钮.get调用save方法之前做一个,但是还有另一种方法,把这个检查留在save方法中吗?换句话说,给定一个Option[A],是否可以从(可能不存在的)A对象上的方法中指定部分函数?

(希望这个问题有意义,尽管有复杂的例子)

编辑:奖金问题:如果Option[Kitteh]我使用了,而不是,怎么Either[Throwable, Kitteh]办?

更新:添加到伪代码的附加行以显示警告对话框:理想情况下,save应始终调用该方法,以便在没有有效的 Kitteh 可保存时警告用户。

0 投票
2 回答
934 浏览

scala - 使用反向关联中缀表示法部分应用柯里化函数的语法

换句话说,这有什么不应该编译的充分理由吗?

以下是一些解决方法:

但我的问题主要是关于一般的正确语法。

0 投票
2 回答
265 浏览

c++ - 是否可以通过将一个参数设置为固定值来从 n 参数函数中获得 (n-1) 参数函数?

我想知道在 C++ 中是否有可能通过将第 n 个参数的值设置为某个值(在运行时确定)来从带 n 个参数的函数中获取 (n-1) 个参数?

例如,我想做类似以下的事情:

从概念上讲,foo是由 索引的函数c族,即函数族foo_c (float a, float b)(在此处将“foo_c”读为“foo 下标 c”),我想foo_c分别将指向它的指针作为参数传递给bar.

这在 C++ 中是否可能?据我所知,使用上面的函数指针是不可能的。有没有其他方法可以做这样的事情?

我曾短暂考虑过制作foo一个函数模板,但这不起作用,因为我想在运行时设置它的第三个参数。

显而易见的解决方案当然是进行修改bar,以便将类型float f(float q, float r, float t)作为其第三个参数,但这会使代码的可重用性大大降低(并且看起来不那么优雅)。我还想将其他函数传递给bar,其中一些只需要两个参数,三个以上,或者不同类型的参数,我需要在将它们传递给之前将它们设置为固定值bar

我还不太清楚bar在这种情况下template <typename T, typename S> float bar(float x, float y, T f(float a, float b, S param), S parameters)是否可以按照bar <double *(float, float, float), float> (123, 456, function, parameters). 沿着这些路线的任何东西都行得通吗?

0 投票
1 回答
137 浏览

java - 从java函数部分应用函数

我有这样的java函数

我想从中创建一个部分应用函数,并为 Object... 部分指定一些参数。我不确定这是否可能。我试过

并希望它用作

但这似乎不起作用。另外,这个对象……有技术名称吗?

编辑:稍微更改代码(我的错误..我忘记在其中输入 val 名称)并添加我想要的用法示例。

EDIT2:我认为我的主要问题是可以在 vararg 上执行部分应用功能吗?

EDIT3:感谢肘部的建议。我想出

工作得很好

0 投票
2 回答
351 浏览

c# - 返回值是否有等效的部分应用程序?

如果 papply 返回一个比输入函数少的函数,是否有类似的 FP 操作返回一个函数,该函数返回一个值而不考虑输入函数的值?如果是这样,是否有 C# 等价物?

考虑一个 C# 函数,它返回void您想要转换为表达式的值,您已经通过编写匿名函数包装器(如(args) => f(args); return null;.

在 C# 中,

理想情况下,您可以将其称为 like FP.WhatIsMyName(voidfunc),从而避免强制转换.

在 Clojure 中,

0 投票
3 回答
2537 浏览

haskell - 带中缀函数的部分应用

虽然我对数学意义上的柯里化有点了解,但部分应用中缀函数是一个新概念,这是我在深入阅读《Learn You a Haskell for Great Good 》一书后发现的。

鉴于此功能:

作者以一种有趣的方式使用它:

在这里,我可以清楚地看到结果函数传递了不同的参数,考虑到它是一个柯里化函数,这不会以正常方式发生(会吗?)。那么,Haskell 对中缀切片有什么特殊处理吗?它对所有中缀函数都是通用的吗?


作为旁注,这是我学习 Haskell 和函数式编程的第一周,我仍在阅读这本书。

0 投票
1 回答
13664 浏览

c# - 替换 lambda 表达式中的参数

考虑到这段代码:

你怎么能把exp0它变成两个与exp1and相同的表达式exp2。请注意,我不想只评估exp0每个Fooin foos,而是获得两个新表达式。

[更新]

基本上,我希望能够扩展或“展平”传递给Linq扩展方法的表达式,例如Sum枚举中每个项目的一个表达式,因为这些枚举将是静态的,并且因为我已经有代码可以读取不获取参数(然后将它们转换为另一种语言)。

我将MetadataToken用作对具有特定属性(在本例中将具有此属性)的属性的引用,a并将b其与将 C# 属性与另一种语言的变量相关联的字典一起使用:

0 投票
12 回答
19423 浏览

python - 可以部分应用不带关键字参数的函数的第二个参数吗?

以python内置pow()函数为例。

但是我如何将 xs 提高到 2 的幂呢?

要得到[1, 4, 9, 16, 25, 49, 64]

我知道列表理解会更容易。

0 投票
3 回答
365 浏览

haskell - 行动中的懒惰?(哈斯克尔)

Learn You a Haskell的第6章中,介绍了以下功能:

作者给出了几个我觉得很容易理解的例子。然后这个:

哪个输出[[3,4,6],[9,20,30],[10,12,12]]

这是懒惰评估的例子吗?我试图将 zipWith' 翻译成 Scheme(见下文)。我用“简单”的例子来工作,但不是最后一个,这让我认为 Haskell 的懒惰可能会有所作为。