Sono un po 'confuso per quanto riguarda la differenza tra un tipo e tipo di dati in Haskell.Qual è la differenza tra tipo e tipo di dati in Haskell?
Dalla letteratura che ho incontrato ho avuto l'impressione che fossero concetti diversi.
Sono un po 'confuso per quanto riguarda la differenza tra un tipo e tipo di dati in Haskell.Qual è la differenza tra tipo e tipo di dati in Haskell?
Dalla letteratura che ho incontrato ho avuto l'impressione che fossero concetti diversi.
Tipo e tipo di dati fare riferimento esattamente allo stesso concetto.
La Haskell parole chiave type
e data
sono diversi, però: data
consente di introdurre un nuovo tipo di dati algebrico, mentre type
fa solo un tipo di sinonimo.
Vedere Haskell wiki per dettagli.
I termini sono talvolta misti, ma in genere un "tipo di dati" si riferisce a un tipo introdotto utilizzando la parola chiave data
, che ha costruttori su cui è possibile associare il modello. Questi sono chiamati anche i tipi di dati algebrici".
Basta 'tipo' è un termine più generale che comprende anche i tipi creati utilizzando newtype
, tipi di funzione e così via.
Quindi scriverebbe da solo Integer etc? – user997112
Per completare il quadro, c'è' newtype' troppo Affrontare la differenza tra 'newtype T a = T a' e' data T a = T a' è difficile, ma piuttosto importante –
ho visto quel newtype su un esempio Quindi, qual è la differenza nel tuo esempio? – user997112
@ user997112 'newtype' è solo un tipo in fase di compilazione utilizzato per creare una sorta di sinonimo, ma trattato come un tipo diverso.Potresti racchiuderlo in un' data', ma aggiungerebbe un sovraccarico in fase di esecuzione. 'newtype' esplicita al compilatore che vuoi la differenziazione del tipo, senza il sovraccarico di run-time lunga storia: http://www.haskell.org/haskellwiki/Newtype – Ptival