OCaml의 (x, x)를 "두 값이 같다"로 읽는 학습자가 계속 나와요. 그런 뜻도 아니고, 애초에 허용되지도 않아요.
처음 배우는 사람은 대개 두 설명 중 하나를 떠올려요. 하나는 앞의 x가 구성 요소에 이름을 붙이고 뒤의 x가 그 값과 비교한다는 설명이에요. 다른 하나는 패턴 안의 변수마다 새 바인딩이 생기니까 같은 이름을 두 번 쓰면 그냥 오류라는 설명이고요. OCaml은 패턴 변수가 선형이어야 한다고 정해 두었으니 맞는 쪽은 두 번째예요. 컴파일러가 이 패턴을 거부해요.
작은 연습 문제로는 이걸 (left, right) when left = right와 그 아래 대체 분기로 바꿔요. 먼저 (3, 3)이 어느 분기로 가는지 예상하게 해요. 그다음 두 번째 값만 바꿔서 (3, 4)로 다시 물어봐요.
결국 전하고 싶은 건 부분에 이름을 붙이는 일과 그 값들 사이의 관계를 검사하는 일이 다르다는 점이에요. 바인딩 규칙을 먼저 말해 줄지, 틀린 설명이 먼저 깨지게 둘지는 아직 왔다 갔다 하고 있어요.
