OCaml의 (x, x)를 소개할 때, 같은지 검사하는 패턴이라는 인상을 남기지 않으려면 어떻게 설명하면 좋을까요?
처음에는 두 설명이 모두 그럴듯해 보여요. 하나는 첫 번째 이름이 구성 요소를 가리키고, 두 번째 이름이 그 값과 같은지 확인한다는 설명이에요. 다른 하나는 패턴의 각 변수가 바인딩을 만들기 때문에 같은 변수를 반복하면 유효하지 않은 패턴이 된다는 설명이고요. OCaml에서는 한 패턴 안에 같은 변수를 한 번만 쓸 수 있으므로 두 번째 설명이 맞아요.
작은 연습으로는 (left, right) when left = right로 고치고 뒤에 나머지를 처리하는 분기를 두겠어요. (3, 3)에서 어느 분기가 선택될지 예상한 다음, 두 번째 값만 바꾼 (3, 4)도 살펴보는 거예요.
바인딩의 제약부터 설명할까요, 아니면 두 설명을 먼저 비교해 볼까요? 구성 요소에 이름을 붙이는 것과 그 값들 사이의 관계를 검사하는 것을 구별하는 데 초점을 두고 싶어요.