Pattern matching is fantastic. Also, there are guards:
def handle_info(msg, state) when is_tuple(msg) do
# ...
end
I haven't written anything big with Elixir/Erlang yet, but I definitely feel more confident my Elixir code will work than Python, say. Not as much as Go, though.
As an aside, comparing:
to something similar in Go: That's very convenient. Also, you can bind multiple times to a single argument (sort of like what you showed): That's not a default argument, that's binding the second argument to state and the pid inside the state tuple.