If you wrap the anonymous function with parentheses, it will work:
iex(1)> (&(&1 * &2)).()
** (BadArityError) &:erlang.*/2 with arity 2 called with no arguments
The Error is expected, as we're calling a 2 arity fun with zero arguments. If we pass it two numbers, we should get see them get multiplied together:
iex(2)> (&(&1 * &2)).(2,3)
6