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

时间:2016-12-02 00:01:47

标签: elixir currying

我想部分应用一个功能。是否有标准的简洁方法在Elixir中进行任何类型的currying?

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

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

new_func2 = fn -> my_func2(constant) end

但它看起来很难看。

1 个答案:

答案 0 :(得分:6)

您可以使用捕获&运算符进行清理:

plus2 = &Kernel.+(2, &1)
plus2.(4)
6

注意加号2和它的parens

之间的点.

因为这是

的语法糖
plus2 = fn(right) -> Kernel.+(2, right) end

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

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

相关问题