Я немного запутался, разница между типа и типа данных в Haskell.В чем разница между типом и типом данных в Haskell?
Из литературы, с которой я столкнулся, у меня сложилось впечатление, что они были разными понятиями.
Я немного запутался, разница между типа и типа данных в Haskell.В чем разница между типом и типом данных в Haskell?
Из литературы, с которой я столкнулся, у меня сложилось впечатление, что они были разными понятиями.
Тип и тип данных относятся к точно такой же концепции.
Haskell ключевые слова type
и data
различны, хотя: data
позволяет ввести новый алгебраический тип данных, в то время как type
просто делает синоним типа.
Подробнее см. На Haskell wiki.
Термины иногда смешиваются, но обычно «тип данных» относится к типу, введенному с использованием ключевого слова data
, в котором есть конструкторы, с которыми можно сопоставить шаблон. Их также называют алгебраическими типами данных».
Просто„типа“является более общим термином, который также включает в себя тип, созданных с использованием newtype
, типов функций и так далее.
Так что бы напечатать сам по себе, включите Integer и т. д.? – user997112
Для полноты картины, есть' newtype' слишком Ухватить разницу между «newtype T a = T a» и «data T a = T a» сложно, но весьма важно. –
Я видел этот тип newtype на примере. Какая разница в вашем примере? – user997112
@ user997112 'newtype' - это всего лишь тип времени компиляции, используемый для создания своего рода синонима, но рассматривается как другой тип. Вы можете обернуть его внутри' data', но это добавит некоторые накладные расходы во время выполнения. 'newtype' делает он явно указывает компилятору, что вы хотите дифференцировать тип, без накладных расходов во время выполнения. длинная история: http://www.haskell.org/haskellwiki/Newtype – Ptival