Returning a Function

Learn how a function can return another function.

In Elixir, functions are first-class citizens. We can define a function, assign it to a variable, and then use that variable to invoke the function. We can also pass a function as an argument to another function. This is often referred to as anonymous functions or lambdas in other programming languages.

An Elixir function can also return a function. Let’s elaborate on it through an example.

Here’s the code:

iex> fun1 = fn -> fn -> "Hello" end end 
#Function<12.17052888 in :erl_eval.expr/5> 
iex> fun1.()
#Function<12.17052888 in :erl_eval.expr/5> 
iex> fun1.().()
"Hello"

The first line is hard to ...