Haskell (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m sistemazione fonti e fix vari
FrescoBot (discussione | contributi)
m Bot: numeri di pagina nei template citazione
 
Riga 49:
Tra le sue funzionalità Haskell presenta la [[valutazione pigra]], le [[Funzione anonima|espressioni lambda]], ''[[pattern matching]]'', [[comprensione di lista]], classi di tipi, e [[Polimorfismo (informatica)|polimorfismo]]. È un linguaggio puramente funzionale, il che significa che le funzioni sono in genere pure, ovvero senza [[Effetto collaterale (informatica)|effetti collaterali]]. Esiste un costrutto diverso apposta per rappresentare gli effetti collaterali, ed è ortogonale alle funzioni. Una funzione pura può restituire un effetto collaterale che è successivamente eseguito, imitando così le funzioni impure degli altri linguaggi.
 
Haskell ha un sistema di tipi forte e statico, basato sull'inferenza di Hindley-Milner. La principale innovazione portata in questo campo sono le classi di tipi, concepite in origine come maniera di principio per introdurre il [[Overloading|sovraccarico]],<ref name="wadler89">{{Cita libro|cognome1=Wadler|nome1=P.|nome2=S. |cognome2=Blott|titolo=Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '89 |capitolo=How to make ad-hoc polymorphism less ad hoc |anno=1989|editore=[[Association for Computing Machinery|ACM]]|pp=60–7660-76|doi=10.1145/75277.75283|isbn=978-0-89791-294-5}}</ref> ma nel seguito usate in molti altri ambiti.<ref name="hallgren01">{{Cita pubblicazione|cognome=Hallgren|nome=T.|data=gennaio 2001|titolo=Fun with Functional Dependencies, or Types as Values in Static Computations in Haskell|rivista=Proceedings of the Joint CS/CE Winter Meeting|città=Varberg, Sweden|url=http://www.cs.chalmers.se/~hallgren/Papers/wm01.html}}</ref>
 
Il costrutto che rappresenta gli effetti collaterali è un esempio di [[Monade (informatica)|monade]]: un quadro generale che può modellizzare vari calcoli come la gestione degli errori, il [[Algoritmo nondeterministico|nondeterminismo]], l'[[Parsing|analisi sintattica]] e la memoria transazionale. Sono definite come tipi di dato ordinari, ma Haskell fornisce un po' di zucchero sintattico per facilitarne l'uso.