Learners keep reading OCaml's (x, x) as "both halves are equal". It isn't that, and it isn't even legal.
A newcomer tends to reach for one of two stories. In one, the first x names a component and the second checks against it. In the other, every variable in a pattern introduces a fresh binding, so writing x twice is just an error. OCaml requires pattern variables to be linear, so the second story is the true one and the compiler rejects the pattern.
For a tiny exercise I swap it for (left, right) when left = right with a fallback case under it. Learners guess which case (3, 3) lands in. Then change only the second component and ask again with (3, 4).
What I want to land is the gap between naming the parts and testing a relationship between them. I keep going back and forth on whether to state the binding rule up front or let the wrong story fail first.
