При проектировании структур данных в функциональных языках есть 2 варианта:
- Обозначьте их конструкторы и соответствие шаблону.
- Скрыть свои конструкторы и использовать функции более высокого уровня для изучения структур данных.
В каких случаях, что подходит?
Соответствие шаблону может сделать код более читаемым или более простым. С другой стороны, если нам нужно что-то изменить в определении типа данных, тогда необходимо обновить все места, где мы сопоставляем шаблоны (или конструируем их).
Я задавал этот вопрос сам в течение некоторого времени. Часто мне приходит в голову, что я начинаю с простой структуры данных (или даже с псевдонимом type
), и кажется, что конструкторы + сопоставление образцов будут самым легким подходом и создадут чистый и читаемый код. Но в дальнейшем все усложняется, мне нужно изменить определение типа данных и реорганизовать большую часть кода.