Recursive anonymous functions

An example from Learn Functional Programming with Elixir by Ulisses Almeida :

iex> fact_gen = fn me -> 
  fn
    0 -> 1
    x when x > 0 -> x * me.(me).(x - 1) 
  end
end
iex> factorial = fact_gen.(fact_gen) 
iex> factorial.(5)
120
1 Like