Erlang / Erlang Basics Interview questions
How does pattern matching differ from equality comparison?
Equality comparison (== or =:=) asks a yes/no question: are these two already-known
values the same? Pattern matching (=, function clauses, case) does more — it
can also bind unbound variables as a side effect of a successful match, and it can check structural
shape rather than a single scalar value.
5 =:= 5. %% true, plain equality {ok, X} = {ok, 42}. %% match succeeds AND binds X = 42 {ok, X} = {error, _}. %% match fails (badmatch), not just "false"
Another subtlety: a failed equality check just evaluates to false, while a failed pattern match
(outside a guarded context) raises a badmatch exception. That's why pattern matching is used for
control flow — a mismatch is treated as an exceptional condition, not a normal boolean outcome.
More Related questions...