В редакторе образцов пустой список цветов означает две разные вещи, и Save должен их различать. Корректность цветов здесь ни при чём. Всё, что принимает редактор, считаем допустимым.
У только что открытой правки образца введённой палитры нет. Потом пользователь нажимает Clear, добавляет синий и снова его убирает. Список пуст и в начале, и в конце, но решение есть только в конце. К этому моменту пользователь сознательно выбрал пустую палитру.
Можно хранить список цветов и флаг entered. А можно дать состояниям имена, три варианта F# вроде NotEntered, Empty и Colors of Color list. Удаление последнего цвета ведёт в Empty. Сброс правки возвращает в NotEntered.
Есть одна загвоздка, с которой я пока не разобрался. Такая нагрузка всё ещё допускает Colors [], так что одни имена не определяют, как строятся значения. Возможно, не хватает маленькой функции построения. Хотя для такого небольшого редактора список с флагом, пожалуй, останется понятнее, и куда я склоняюсь, пока не знаю.
