That's destructuring, a feature not a bug. Same as it works in any functional language - and tremendously useful once you get the hang of it
NotFound = 404,
case Status of
NotFound -> "Not Found";
_ -> "Other Status"
end.
That snippet will return "Other Status" for Status = 400. The Python equivalent of that snippet is a SyntaxError as the first case is a catch all and the rest is unreachable.What Python needs is what Elixir has. A "pin" operator that forces the variable to be used as its value for matching, rather than destructuring.