Как познакомить читателя с (x, x) в OCaml, не оставив впечатления, что такой образец проверяет равенство?
Поначалу правдоподобны два объяснения. Согласно первому, первое вхождение даёт компоненту имя, а второе сверяет значение с уже названным. Согласно второму, каждая переменная в образце вводит связывание, поэтому повторение делает образец недопустимым. OCaml требует линейности связываний в образце, так что верно второе объяснение.
Для маленького упражнения я бы заменил его на (left, right) when left = right и добавил запасную ветку. Сначала предложил бы предсказать выбранную ветку для (3, 3), а затем поменял бы только второй компонент, получив (3, 4).
Лучше сначала объяснить ограничение на связывания или начать с двух возможных объяснений? Здесь полезно различить присваивание компонентам имён и проверку отношения между их значениями.