Estoy un poco confundido en cuanto a la diferencia entre un tipo y una datos de tipo en Haskell.¿Cuál es la diferencia entre tipo y tipo de datos en Haskell?
De la literatura que he encontrado me dio la impresión de que eran conceptos diferentes.
Estoy un poco confundido en cuanto a la diferencia entre un tipo y una datos de tipo en Haskell.¿Cuál es la diferencia entre tipo y tipo de datos en Haskell?
De la literatura que he encontrado me dio la impresión de que eran conceptos diferentes.
tipo y tipo de datos se refieren exactamente a lo mismo.
El Haskell palabras clave type
y data
son diferentes, sin embargo: data
le permite introducir un nuevo tipo de datos algebraica, mientras type
sólo hace un sinónimo de tipo.
Consulte Haskell wiki para obtener más información.
Los términos a veces son mixtos, pero generalmente un "tipo de datos" se refiere a un tipo introducido usando la palabra clave data
, que tiene constructores con los que puede coincidir el patrón. Estos también son llamados tipos de datos algebraicos".
Justo 'tipo' es un término más general que también incluye los tipos creados con newtype
, los tipos de función y así sucesivamente.
Entonces, ¿escribirías por tu cuenta incluir Integer, etc.? – user997112
Para completar el cuadro, hay' newtype' demasiado Agarrar la diferencia entre 'newtype T a = T a' y' data T a = T a' es difícil, pero bastante importante. –
vi ese newtype en un ejemplo. Entonces, ¿cuál es la diferencia en tu ejemplo? – user997112
@ user997112 'newtype' es simplemente un tipo de tiempo de compilación utilizado para crear un tipo de sinónimo, pero tratado como un tipo diferente. Podría envolverlo dentro de un' datos', pero agregaría algo de sobrecarga en el tiempo de ejecución. 'newtype' hace es explícito para el compilador que desea la diferenciación de tipo, sin la sobrecarga en tiempo de ejecución. larga historia: http://www.haskell.org/haskellwiki/Newtype – Ptival