问题标签 [function-composition]

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

haskell - 元组和函数组合

有没有更好的方法来表达(\(a, b) -> a < b)函数组合?我觉得我错过了一些东西,而尝试curry只会让我更加困惑。

0 投票
2 回答
236 浏览

python - 函数组合 VS 作用于另一个函数的函数

我有许多可重用的函数,都具有相同的签名(它们采用 arecord并返回 a float)。我经常需要将函数组合成一个新函数。

假设我想创建一个接受 a 的函数record,应用于f它,如果结果为负,则将其转换为零。我有两种方法:组合和功能修改。每种方法的优缺点是什么?

作品:

修改:

0 投票
5 回答
3035 浏览

python - Python中的Pointfree函数组合

我有一些谓词,例如:

并希望在逻辑上将它们组合为:

现在的问题是:这样的组合可以写成无风格,例如:

这当然不是预期的效果,因为 lambda 函数的真值是True并且是短路运算符。我想出的最接近的事情是定义一个类,它是一个简单的谓词容器,它实现并具有方法并组合谓词。的定义如下:andorP__call__()and_()or_()P

现在P我可以创建一个新的谓词,它是这样的谓词组合:

相当于上面的 lambda 函数。这更接近我想要的,但它也不是无点的(这些点现在是谓词本身而不是它们的参数)。现在第二个问题是:有没有更好或更短的方法(可能没有括号和点)在 Python 中组合谓词,而不是使用类似P和不使用 (lambda) 函数的类?

0 投票
2 回答
790 浏览

haskell - Haskell 重写规则和函数组合

为什么 haskell 需要多个重写规则,具体取决于函数组合技术和长度?有没有办法避免这种情况?

例如,给定以下代码...

这适用于

但是我们需要为

给我们留下以下规则

但是,当我们将它们串在一起或使用其他形式的组合时,规则不会触发。

为什么是这样?我是否必须为每个可能的实现编写重写规则?

0 投票
3 回答
3574 浏览

haskell - runST 和函数组成

为什么这个类型检查:

虽然以下没有:

GHCI 抱怨:

0 投票
1 回答
1092 浏览

haskell - 可变参数撰写功能?

我正在尝试编写一个可变参数函数组合函数。这基本上是(.)除了第二个参数函数是可变的。这应该允许如下表达式:

要不就

目前,如果我添加IncoherentInstances并需要第一个参数函数的非多态实例,我已经达到的效果。

有任何想法吗?甚至可能吗?

0 投票
1 回答
340 浏览

performance - Haskell:不同功能组成的性能差异?

以下代码:

ghc.exe -O3当我将average函数的定义替换为时变得更快(编译选项:)

这可能是什么原因?我认为这两行之间的差异基本上是语法。values编译器更容易优化第二个版本(没有自由变量)吗?

有趣的是,在没有优化的情况下编译时,版本 I 变得更快。

计时结果:

选项:-O3

第一版:0.280s 第二版:0.212s

选项:(无优化)

第一版:0.42s 第二版:0.44s

在 Cygwin 中使用timeshell 命令测量。

type=Double 的计时结果:

双倍的:

选项:-O3

第一版:0.22s 第二版::0.212s

选项:(无优化)

第一版:0.34s 第二版:0.35s

更多信息:我正在使用编译器

0 投票
4 回答
1431 浏览

function - 如何创建返回函数的 Haskell 函数?

我想创建三个 Haskell 函数:abc

每个函数都有一个参数。参数是三个函数之一。

我希望函数a具有这种行为:

  • 如果参数是函数a,则返回函数a
  • 如果参数是函数 b 则返回函数b
  • 如果参数是函数 c 则返回函数a

以下是我对功能期望的行为的回顾a

这是我希望其他两个功能的行为:

创建后,我希望能够以各种方式组合函数,例如:

如何创建这些功能?

0 投票
1 回答
223 浏览

haskell - 使用函数 a → b 作为“一元”函数 a → mb

我目前正在玩 Haskell 基础知识,偶然发现了以下“用例”:

所以我基本上在这里混合了单子函数和纯函数并将它们组合成单子函数。这行得通,但在我看来,这return . (*10)似乎是一个常用的东西,所以我很想为它定义一个简写,比如monadify = (return.).

不过,在我这样做之前,我想问一下是否已经有帮助者来处理这种情况。当然,我也可能对整个事情感到困惑,并且有理由不应该这样做。如果是这样,请告诉我。

0 投票
2 回答
123 浏览

clojure - 在 Clojure 中将单参数函数组合成多参数函数

我想知道 Clojure 中是否有将多个单参数函数组合成一个接受向量的新函数的习语。新函数应该将第一个函数应用于第一个参数,依此类推。

我认为这在许多情况下都很有用。例如,您可能希望使用更简单的一维函数来变换点的 x、y 和 z 坐标。

我将自己实现如下,但恐怕它应该已经存在于标准 API 中。