Decisions and repetition.
WHAT EVERY LANGUAGE PROVIDES
Conditional execution Repetition Early exit from a loop Skipping to the next iteration
WHAT VARIES
Syntax Whether a switch or match construct exists, and how powerful it is Whether loops over collections are provided
WHAT PATTERN MATCHING PROVIDES
Matching on the shape of data, not only on a value.
WHY IT MATTERS
It expresses branching over structured data far more clearly than nested conditions.
WHAT LANGUAGES WITH IT ENFORCE
That every case is handled, in some implementations.
WHY THAT IS VALUABLE
Adding a new case produces a compile error everywhere it must be handled.
WHAT TO PREFER FOR ITERATION
The construct iterating a collection directly, where provided.
WHY
It avoids off-by-one errors and index mistakes entirely.
WHAT TO AVOID
Deeply nested conditions Loops modifying the collection they iterate Early exits that skip cleanup
WHAT TO USE INSTEAD OF DEEP NESTING
Early returns, handling exceptional cases first.
WHAT THAT PRODUCES
Code with the main path at one level of indentation.