问题标签 [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.
haskell - 元组和函数组合
有没有更好的方法来表达(\(a, b) -> a < b)
函数组合?我觉得我错过了一些东西,而尝试curry
只会让我更加困惑。
python - 函数组合 VS 作用于另一个函数的函数
我有许多可重用的函数,都具有相同的签名(它们采用 arecord
并返回 a float
)。我经常需要将函数组合成一个新函数。
假设我想创建一个接受 a 的函数record
,应用于f
它,如果结果为负,则将其转换为零。我有两种方法:组合和功能修改。每种方法的优缺点是什么?
作品:
修改:
python - Python中的Pointfree函数组合
我有一些谓词,例如:
并希望在逻辑上将它们组合为:
现在的问题是:这样的组合可以写成无点风格,例如:
这当然不是预期的效果,因为 lambda 函数的真值是True
并且是短路运算符。我想出的最接近的事情是定义一个类,它是一个简单的谓词容器,它实现并具有方法并组合谓词。的定义如下:and
or
P
__call__()
and_()
or_()
P
现在P
我可以创建一个新的谓词,它是这样的谓词组合:
相当于上面的 lambda 函数。这更接近我想要的,但它也不是无点的(这些点现在是谓词本身而不是它们的参数)。现在第二个问题是:有没有更好或更短的方法(可能没有括号和点)在 Python 中组合谓词,而不是使用类似P
和不使用 (lambda) 函数的类?
haskell - Haskell 重写规则和函数组合
为什么 haskell 需要多个重写规则,具体取决于函数组合技术和长度?有没有办法避免这种情况?
例如,给定以下代码...
这适用于
但是我们需要为
和
给我们留下以下规则
但是,当我们将它们串在一起或使用其他形式的组合时,规则不会触发。
为什么是这样?我是否必须为每个可能的实现编写重写规则?
haskell - runST 和函数组成
为什么这个类型检查:
虽然以下没有:
GHCI 抱怨:
haskell - 可变参数撰写功能?
我正在尝试编写一个可变参数函数组合函数。这基本上是(.)
除了第二个参数函数是可变的。这应该允许如下表达式:
要不就
目前,如果我添加IncoherentInstances
并需要第一个参数函数的非多态实例,我已经达到的效果。
有任何想法吗?甚至可能吗?
performance - Haskell:不同功能组成的性能差异?
以下代码:
ghc.exe -O3
当我将average
函数的定义替换为时变得更快(编译选项:)
这可能是什么原因?我认为这两行之间的差异基本上是语法。values
编译器更容易优化第二个版本(没有自由变量)吗?
有趣的是,在没有优化的情况下编译时,版本 I 变得更快。
计时结果:
选项:-O3
第一版:0.280s 第二版:0.212s
选项:(无优化)
第一版:0.42s 第二版:0.44s
在 Cygwin 中使用time
shell 命令测量。
type=Double 的计时结果:
双倍的:
选项:-O3
第一版:0.22s 第二版::0.212s
选项:(无优化)
第一版:0.34s 第二版:0.35s
更多信息:我正在使用编译器
function - 如何创建返回函数的 Haskell 函数?
我想创建三个 Haskell 函数:a
、b
和c
。
每个函数都有一个参数。参数是三个函数之一。
我希望函数a
具有这种行为:
- 如果参数是函数
a
,则返回函数a
。 - 如果参数是函数 b 则返回函数
b
。 - 如果参数是函数 c 则返回函数
a
。
以下是我对功能期望的行为的回顾a
:
这是我希望其他两个功能的行为:
创建后,我希望能够以各种方式组合函数,例如:
如何创建这些功能?
haskell - 使用函数 a → b 作为“一元”函数 a → mb
我目前正在玩 Haskell 基础知识,偶然发现了以下“用例”:
所以我基本上在这里混合了单子函数和纯函数并将它们组合成单子函数。这行得通,但在我看来,这return . (*10)
似乎是一个常用的东西,所以我很想为它定义一个简写,比如monadify = (return.)
.
不过,在我这样做之前,我想问一下是否已经有帮助者来处理这种情况。当然,我也可能对整个事情感到困惑,并且有理由不应该这样做。如果是这样,请告诉我。
clojure - 在 Clojure 中将单参数函数组合成多参数函数
我想知道 Clojure 中是否有将多个单参数函数组合成一个接受向量的新函数的习语。新函数应该将第一个函数应用于第一个参数,依此类推。
我认为这在许多情况下都很有用。例如,您可能希望使用更简单的一维函数来变换点的 x、y 和 z 坐标。
我将自己实现如下,但恐怕它应该已经存在于标准 API 中。