QNA > C > Come Funziona Il 'Derivare' In Haskell?

Come funziona il 'derivare' in Haskell?

Prima di tutto, derivare non funziona per un tipo di dati arbitrario. Per esempio, non potete confrontare le funzioni per l'uguaglianza.

Funziona per tutti i tipi di dati algebrici. Questo perché ci sono regole molto semplici per costruire tipi di dati algebrici. Li costruisci da tipi di dati primitivi usando prodotti e somme.

Il compilatore conosce tutti i tipi di dati primitivi, come unit (), Int, etc., e sa come implementare l'uguaglianza, show, e alcuni altri metodi di classe per loro.

Questi tipi primitivi possono essere combinati usando prodotti -- cioè tuple o record con nome. Se sapete come implementare, ad esempio, l'uguaglianza per i tipi primitivi, potete facilmente derivare l'uguaglianza per tuple o record. Lo stesso con show, ecc.

Oppure vengono combinati usando le somme, che sono le barre verticali nelle definizioni dei dati. Di nuovo, si possono facilmente implementare confronti, show, ecc. per le somme -- basta usare la corrispondenza dei pattern.

Similmente, ci sono regole per i tipi di dati parametrizzati e i tipi di dati ricorsivi. Provate ad implementare Eq o Show per un mucchio di tipi di dati algebrici, e capirete le regole. Sono interamente meccaniche e possono essere automatizzate.

È anche possibile implementare la derivazione per le classi tipo definite dall'utente, ma è più difficile. Dovete dire al compilatore come implementare i metodi della vostra classe tipo per tutti i tipi primitivi e per prodotti e somme generiche. Ma si può fare.

Di Betta Mehrhoff

Raid Shadow Legends è un gioco divertente? :: Quali sono le migliori fonti online per notizie e analisi NBA?
Link utili