Julia 中有函数组合运算符吗?

问题描述 投票:0回答:1

假设我有两个功能:

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

它们的组成就是函数

h(x) = f(g(x))

Julia 中有用于函数组合的运算符吗?例如,如果

*
是函数组合的运算符(它不是),我们可以写:

h = f * g

P.S.我知道如果我愿意的话我可以定义它,

*(f::Function, g::Function) = x -> f(g(x))

只是询问 Julia 中是否已有操作员表单。

julia function-composition
1个回答
17
投票

创建此类运算符目前是一个未决问题,但现在您可以保留语法:

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 来执行此类操作的方法。

注意:∘运算符可以写成

© www.soinside.com 2019 - 2024. All rights reserved.