2011-10-27 14 views

Respuesta

37

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.

+1

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. –

+0

vi ese newtype en un ejemplo. Entonces, ¿cuál es la diferencia en tu ejemplo? – user997112

+1

@ 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

1

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.

+0

Entonces, ¿escribirías por tu cuenta incluir Integer, etc.? – user997112

Cuestiones relacionadas