호출자가 이 큐에 묻는 건 List.length items > 8 하나뿐이고, 그걸 계속 반복해서 물어요. 큐는 불변 OCaml 리스트 하나이고, 갱신할 때마다 새 큐를 돌려줘요. 선택지는 두 가지예요. 정확한 개수를 들고 다니거나, 기준값 질의를 내보이거나요.
(items, count)로 가면 쌍 패턴이 두 구성 요소에 이름을 붙여 주고, 그때부터 count = List.length items가 모든 갱신 뒤에도 성립해야 해요. 넣으면 하나 늘어요. 꺼내기에 성공하면 하나 줄어요. 빈 큐에서 꺼내려 하면 0으로 남아요. 두 구성 요소를 함께 받는 생성 함수도 둘의 관계를 지켜야 하고요.
기준값 쪽이 더 작아요. List.compare_length_with items 8 > 0은 호출자가 원하는 걸 그대로 말해 주고, OCaml 5.4 문서에 따르면 이 비교는 최대 주어진 횟수만큼만 반복하고 멈출 수 있어요. 지금은 개수 자체를 묻는 곳이 없어서, 굳이 저장해 둘 이유가 있는지 의심이 들어요.