& shortcut explanation

Hi please explain how this can be equal or the same.

MyList.map [1,2,3,4], fn (n) -> n+1 end

MyList.map [1,2,3,4], &(&1 + 1)

the shortcut is confusing.

Does the &/1 docs help?


fn(n) -> n + 1

is an anonymous function

&(&1 + 1) is a short cut or alternative way to write an anonymous function

The outer code of it, &( ) indicate that it’s an anonymous function.

The inside is &1 + 1 is the body of the function, which is suppose to do n+1. The problem is how do you indicate that n is a parameter? The solution is that &1 means first parameter. So &1 + 1 just means take the first parameter of the anonymous function and add one to it. The shortcut here is you don’t have to write the fn(n), the function signature, you indicate it in the body instead which makes it shorter.

IIRC &(&1 + &2) is equivalent to fn(n,m) -> n + m