Похоже, что определение newtype
- это просто определение data
, которое подчиняется некоторым ограничениям (например, только одному конструктору) и что из-за этих ограничений система времени выполнения может более эффективно обрабатывать newtype
. И обработка соответствия шаблонов для значений undefined несколько отличается.
Но предположим, что Хаскелл знал бы только определения data
, no newtype
s: не мог ли компилятор выяснить, соответствует ли данное определение данных этим ограничениям и автоматически ли оно более эффективно обрабатывать?
Я уверен, что я упускаю что-то, для этого должна быть какая-то более глубокая причина.