Elixir中是否有标准的curry()函数?

raa*_*cer 4 currying elixir

我想部分应用一个功能.有没有标准简洁的方法在Elixir做任何一种currying?

我知道我可以做这样的事情:

new_func = fn(arg2, arg3) -> my_func(constant, arg2, arg3) end

new_func2 = fn -> my_func2(constant) end
Run Code Online (Sandbox Code Playgroud)

但它看起来很难看.

gre*_*reg 7

您可以使用捕获&运算符来清理它:

plus2 = &Kernel.+(2, &1)
plus2.(4)
6
Run Code Online (Sandbox Code Playgroud)

注意.在plus2和它的parens之间的点

因为这是一种语法糖

plus2 = fn(right) -> Kernel.+(2, right) end
Run Code Online (Sandbox Code Playgroud)

所有相同的规则都适用.就像你必须提供你正在"currying"的函数的所有参数一样,你可以按任何顺序放置位置参数.

文档:http://elixir-lang.org/docs/stable/elixir/Kernel.SpecialForms.html#&/1