朱莉娅有功能构成的操作员吗?

bec*_*cko 7 function-composition julia

说我有两个功能:

f(x) = x^2
g(x) = x + 2
Run Code Online (Sandbox Code Playgroud)

他们的构成是功能

h(x) = f(g(x))
Run Code Online (Sandbox Code Playgroud)

朱莉娅有功能构成的操作员吗?例如,如果*是函数组合的运算符(它不是),我们可以写:

h = f * g
Run Code Online (Sandbox Code Playgroud)

PS我知道如果我愿意,我可以定义它,

*(f::Function, g::Function) = x -> f(g(x))
Run Code Online (Sandbox Code Playgroud)

只是询问Julia中是否有运营商表格.

Ima*_*ngo 12

目前创建此类运算符是一个悬而未决的问题,但现在您可以遵循以下语法:

julia> h(x) = f(g(x))
Run Code Online (Sandbox Code Playgroud)

或更清晰(对于更复杂的功能):

julia> h(x) = x |> g |> f
Run Code Online (Sandbox Code Playgroud)

现在看来你需要保持x使其成为复合函数.

另一个选择是创建自己的运算符(如您所示):

julia> ?(f::Function, g::Function) = x->f(g(x))
julia> h = f ? g
Run Code Online (Sandbox Code Playgroud)

这很好用,但是,它引入了一个lambda函数,我想不出没有lambdas就能执行这种操作的方法.

注意:∘运算符可以写为@ circ,如@DanGetz建议的那样.


编辑:似乎快速关闭将在未来版本中出现,并且可能很容易实现复合运算符的高效版本.

  • 现在在 Julia 0.6 中(如 ∘ ) (3认同)

Hug*_*aux 1

稍后再来这里。\xe2\x88\x98默认可用

\n