This would make me choose erlang over Elixer. It's convenient to find an assignment to a variable and not have to worry there might be another.
iex(1)> x = 4
4
iex(2)> ^x = 3
** (MatchError) no match of right hand side value: 3 foo = "Hello"
if true do
foo = "Bye!"
end
foo # `foo` is still "Hello" here
I guess if you have REALLY long functions it could be ¯\_(ツ)_/¯