2011-10-27 3 views

ответ

37

Тип и тип данных относятся к точно такой же концепции.

Haskell ключевые слова type и data различны, хотя: data позволяет ввести новый алгебраический тип данных, в то время как type просто делает синоним типа.

Подробнее см. На Haskell wiki.

+1

Для полноты картины, есть' newtype' слишком Ухватить разницу между «newtype T a = T a» и «data T a = T a» сложно, но весьма важно. –

+0

Я видел этот тип newtype на примере. Какая разница в вашем примере? – user997112

+1

@ user997112 'newtype' - это всего лишь тип времени компиляции, используемый для создания своего рода синонима, но рассматривается как другой тип. Вы можете обернуть его внутри' data', но это добавит некоторые накладные расходы во время выполнения. 'newtype' делает он явно указывает компилятору, что вы хотите дифференцировать тип, без накладных расходов во время выполнения. длинная история: http://www.haskell.org/haskellwiki/Newtype – Ptival

1

Термины иногда смешиваются, но обычно «тип данных» относится к типу, введенному с использованием ключевого слова data, в котором есть конструкторы, с которыми можно сопоставить шаблон. Их также называют алгебраическими типами данных».

Просто„типа“является более общим термином, который также включает в себя тип, созданных с использованием newtype, типов функций и так далее.

+0

Так что бы напечатать сам по себе, включите Integer и т. д.? – user997112

Смежные вопросы