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

function - 在 Haskell 中,(+) 是一个函数,((+) 2) 是一个函数,((+) 2 3) 是 5。到底发生了什么?

  1. 这怎么可能,那里发生了什么?

  2. 有这个名字吗?

  3. 还有哪些其他语言具有相同的行为?

  4. 任何没有强大的打字系统?

0 投票
1 回答
355 浏览

programming-languages - 什么是咖喱编程语言列表?

我刚刚从另一个问题中了解到 Haskell 被称为柯里化编程语言,因为它默认应用函数柯里化。显示此行为的其他语言是什么?

0 投票
4 回答
189 浏览

haskell - 在 Haskell 中绑定部分应用的函数

我是 Haskell 新手,所以如果你觉得这个问题微不足道,请原谅:

我如何让 GHCi 接受这种声明:let foo = fmap (*3) . fmap (+10)

我尝试向 foo ( let foo :: [Int] -> [Int] =etc) 添加类型声明以使仿函数类型显式但编译器会响应Illegal Signature

谢谢!

编辑 - 显然有很多方法可以做到这一点。我选择了 Tikhon 的答案,因为他是第一个,而且相当直观。谢谢大家!

0 投票
3 回答
1037 浏览

javascript - 关于 Function.prototype.bind() 的困惑

Function.prototype.bind我是 ES5和柯里化参数(基本上是为函数创建默认参数)的忠实粉丝。

我只是在胡闹,但我终其一生都无法弄清楚我自己的构造。这是我的游乐场:

日志输出如下:

但我不明白这个对象究竟是如何成为 inside的{what: 'dafuq'}参考。据我了解,我们正在创建对. 让我们快速检查 MDN 概要:thisfooFunction.prototype.call.bind()

所以,thisArgfor.callhello函数,后面是参数列表。基本上发生的事情是这样的

...uuhhh 现在我的大脑有点疼。我想我现在知道会发生什么,但请有人找到很好的可靠词来详细解释它。

  • 怎么{what: 'dafuq'}变成this reference
0 投票
3 回答
166 浏览

haskell - 部分应用说明-join

为什么具有不同签名的函数的部分应用有效?

Control.Monad.join个例子:

为什么它接受id :: a -> a代替(a -> m b)论点,因为它们显然不同?

0 投票
1 回答
199 浏览

types - Coq 中是否有 (->) 的显式类型构造函数?

我正在尝试定义一个提供身份和组合的类。除了其他有用的实例(带有 nil 和连接的列表;与身份和组合的关系 ;-) ),我想要一个函数实例。

给定

我希望能够定义类似的东西

但是 Coq 中的操作符不是这样工作的。首先我假设->是一个符号,但Locate "_ -> _".声称这是一个Unknown notation. 使用fun a b => a -> b有点工作,但之后的类型看起来很有趣。

(同样适用Eval compute in,似乎它并没有简化类型。)我更喜欢更具可读性的identity nat : nat -> nat. (目前,对于我正在做的事情,这些类型变得不可读。)

有没有办法得到“原始”->或至少说服 Coq 给我更好的类型?


旁注:我正在构建很多Inductive表示评估语义的 s,我的目标是将“普通”编程语言的子集映射到 Coq 上并返回,转移安全约束并发挥作用。我被迫用不同的构造函数一遍又一遍地证明同样的事情,并希望这能让我一次又一次地证明东西。我相信类别是抽象这一点的正确方法。如果我错了,我会在此处包含此注释,也许有更好的方法可以回避整个->问题。

0 投票
2 回答
364 浏览

function - 算子的部分应用

如果我想在字符末尾添加一个空格以返回一个列表,如果我不传递任何参数,我将如何使用部分应用程序来完成此操作?

类型也是?

由于使用 ++ 和 : 运算符的“解析错误”,我无法在末尾添加空格。

到目前为止,我所拥有的是:

任何帮助将非常感激!谢谢

0 投票
1 回答
585 浏览

c++ - boost::bind 成员函数 - 部分应用程序链接

我正在尝试使用 boost::bind 将 curried 函数链接在一起,并得到我无法解决的编译器错误。我可以制作的最简单的示例无法编译:

失败并出现此错误:

这是使用

0 投票
3 回答
197 浏览

scala - 为什么scala不能推断部分应用中省略参数的类型?

考虑一下:

显然 Scala 非常清楚 in 的确切类型,_sum(1,_)必须这样做 say sum(1,_:Int)。为什么 ?

显然 Scala 随机(?)选择了一个:

0 投票
2 回答
1048 浏览

javascript - 部分应用 - Eloquent Javascript

我正在阅读 Eloquent Javascript,并且很难理解下面的示例。任何人都可以逐行解释吗?具体来说,我很困惑为什么第一个循环从一个开始,以及为什么 push 方法同时用于 knownArgs 和 arguments。我知道这与“部分应用程序”有关,但想更详细地解释一下到底发生了什么。