Просто начинаю путешествие в Эликсир. Читая это в книге:
"Оператор and преобразует выражение, которое следует в функцию."
ОК, я думаю, что получил это...
iex(70)> f = &(&1 * &2)
#Function<12.80484245 in :erl_eval.expr/5>
iex(72)> f.(2,3)
6
ok, амперсанд является сокращением анонимной функции и аргументами. Но тогда почему этот следующий вызов не работает?!
iex(73)> &(&1 * &2).()
#Function<12.80484245 in :erl_eval.expr/5>
... и я могу продолжать делать это, казалось бы, навсегда:
iex(76)> &(&1 * &2).().().()
#Function<12.80484245 in :erl_eval.expr/5>
что здесь происходит?