편집기가 받아들인 색은 모두 유효하다고 가정해 봐요. 여기서 생각할 문제는 사용자가 무엇을 결정했는지뿐이에요.
새 견본 편집을 시작하면 아직 입력한 팔레트가 없어요. 사용자가 비우기를 선택하고 파란색을 추가했다가 다시 지워요. 처음과 마지막 모두 목록은 비어 있지만, 저장할 때는 두 순간을 구분해야 할 것 같아요. 마지막에는 빈 팔레트를 쓰겠다고 명시적으로 결정한 셈이니까요.
색 목록과 entered 플래그를 함께 둘 수도 있고, F#에서 NotEntered, Empty, Colors of Color list라는 세 가지 케이스를 써 볼 수도 있겠어요. 마지막 색을 지우면 Empty가 되고, 편집을 초기화하면 NotEntered가 되는 거예요.
다만 작은 문제가 남아요. 이 페이로드로는 Colors []도 만들 수 있으니, 케이스에 이름을 붙이는 것만으로 생성 규칙까지 정해지지는 않아요. 작은 생성 함수와 명시적인 대안들이 상태 전이를 이해하는 데 도움이 될까요? 아니면 이 정도 규모의 편집기에서는 목록과 플래그가 더 알아보기 쉬울까요?