julia - Julia 中是否有用于函数组合的运算符?

标签 julia function-composition

说我有两个功能:

f(x) = x^2
g(x) = x + 2

它们的组成是函数
h(x) = f(g(x))

Julia 中是否有用于函数组合的运算符?例如,如果 *是函数组合的运算符(它不是),我们可以写:
h = f * g

附言我知道如果我愿意,我可以定义它,
*(f::Function, g::Function) = x -> f(g(x))

只是询问 Julia 中是否已经存在运算符表单。

最佳答案

目前是 open issue创建这样的运算符,但现在你可以保持语法:

julia> h(x) = f(g(x))

或更清晰一点(对于更复杂的功能):
julia> h(x) = x |> g |> f

现在看来您需要保留 x使其成为复合函数。

另一种选择是创建自己的运算符(如您所建议的):
julia> ∘(f::Function, g::Function) = x->f(g(x))
julia> h = f ∘ g

这工作得很好,但是,它引入了一个 lambda 函数,我想不出一种没有 lambda 的方法来执行这样的操作。

注意: ∘ 运算符可以像@DanGetz 建议的那样写为\circ。

编辑:似乎 fast closures将在 future 的版本中推出,并且可能很容易实现复合运算符的高效版本。

关于julia - Julia 中是否有用于函数组合的运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36314024/

相关文章:

julia - Julia 中推断的类型差异

command-line-interface - Julia `@.` 命令行选项中的 `--project` 是什么?

performance - Julia 从标准正态分布中绘制

module - 为模块中的每个子类型生成一个方法

haskell - Haskell 中类型的推理

haskell - 和有什么区别。 (点)和 $(美元符号)?

haskell - 函数组合提示

scala - 获取或更新的功能方法

regex - DataArray 不区分大小写的匹配,返回匹配的索引值

haskell - 当我在 Haskell 中用 + 组合 * 时会发生什么?