Я знаю, что newtype
чаще всего сравнивается с data
в Haskell, но я ставил это сравнение с большей точки зрения дизайна, чем как техническая проблема.
В языках с неустойчивым /OO существует анти-шаблон " примитивная одержимость, где плодовитое использование примитивных типов уменьшает тип- безопасность программы и вводит случайную взаимозаменяемость одинаковых типизированных значений, иначе предназначенных для разных целей. Например, многие вещи могут быть строками, но было бы неплохо, если бы компилятор мог знать, статически, что мы хотим назвать именем, а мы хотим быть городом в адресе.
Итак, как часто, программисты Haskell используют newtype
, чтобы дать различие типов в других примитивных значениях? Использование type
вводит псевдоним и дает более четкую семантику чтения прочитанной программы, но не препятствует случайным изменениям значений. Когда я узнаю haskell, я замечаю, что система типов столь же мощна, как и любая, с которой я столкнулся. Поэтому я бы подумал, что это естественная и распространенная практика, но я не видел много или не обсуждал использование newtype
в этом свете.
Конечно, многие программисты делают что-то по-другому, но разве это вообще встречается в haskell?