Я знаю различия между data
, newtype
и type
очень хорошо. Я пишу небольшой скрипт, который будет строить какое-то дерево синтаксиса. Практически все типы имеют один конструктор. Я избегаю type
для обеспечения безопасности (несколько разных типов могут иметь один и тот же тип в Haskell). В этом случае меня не волнует лень/строгость, и я не забочусь о производительности (эта часть отнюдь не критическая по производительности). Я в основном сосредоточен на стиле. У меня есть три варианта:Еще один новый тип данных (стилистический вопрос)
- Использовать только
data
. Это нормально, за исключением того, что у меня много типов с одним конструктором с одним аргументом. Код выглядит как расточительно ... Хотя мне все равно, что производительность, но это просто не так. - Использовать только
newtype
. Это приводит к множеству уродства с кортежами в случае нескольких параметров. - Mix
data
иnewtype
, которые несколько выглядят неравномерно и немного раздражают. Я бы предпочел, чтобы все типы были объявлены одним последовательным способом.
Я нахожусь в дилемму выбора между 1 и 3.