Haskell (linguaggio di programmazione): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m sistemazione fonti e fix vari |
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=
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.
|