Is there standard curry() function in Elixir?

I want to apply a function partially. Is there standard concise way to do any kind of currying in Elixir?

I know I can do somethings like this:

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

new_func2 = fn -> my_func2(constant) end

but it looks ugly.


Solution 1:

You can use the capture & operator to clean it up a bit:

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

Notice the dot . in between plus2 and it's parens

Since this is kind of syntactic sugar for

plus2 = fn(right) -> Kernel.+(2, right) end

all the same rules apply. Like you must supply all arguments to the function you're "currying" and you can place the positional arguments in any order.

Docs on the & operator