Haskell (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Malta95 (discussione | contributi)
Botcrux (discussione | contributi)
m Bot: aggiungo template {{...}}
Riga 1:
{{Linguaggio di programmazione
|nome = Haskell
Riga 10 ⟶ 9:
|estensione = .hs, .lhs
|influenzato_da = Clean, FP, Gofer, Hope e Hope+, Id, ISWIM, KRC, [[Lisp]], Miranda, ML e Standard ML, Orwell, SASL, SISAL, [[Scheme]]
|ha_influenzato = Agda, Bluespec, [[C++11]]/Concepts, [[C_sharpC sharp|C#]]/[[LINQ]], CAL, Cayenne, Clean, [[Clojure]], CoffeeScript, Curry, Elm, Epigram, Escher, [[F Sharp|F#]], Isabelle, [[Java (linguaggio di programmazione)|Java]]/[[Generics Java|Generics]], Kaya, [[Mercury (linguaggio)|Mercury]], Omega, [[Perl 6]], [[Python]], Qi, [[Scala (linguaggio di programmazione)|Scala]], Timber, [[Visual Basic|Visual Basic 9.0]]
|sistema_operativo = [[Multipiattaforma]]
|sito_web =[https://www.haskell.org/ Haskell Language]
Riga 17 ⟶ 16:
 
== Storia ==
 
=== L'inizio della programmazione funzionale ===
{{Per approfondire|Programmazione funzionale}}Tutto iniziò nel [[1978]] con il discorso di John Backus intitolato ''"Can Programming be liberated from the Von Neumann style?"''<ref>[http://worrydream.com/refs/Backus-CanProgrammingBeLiberated.pdf Can Programming Be Liberated from Von Neumann Style?]</ref> con il quale si proponeva la programmazione funzionale non solo come una mera curiosità matematica, bensì anche per scopi industriali.
 
Tra gli anni [[Anni 1970|settanta]] ed [[Anni 1980|ottanta]] del [[XX secolo]], vennero implementati diversi linguaggi funzionali, seppur ancora strettamente legati ai linguaggi imperativi, che si basavano più sul concetto computazionale del [[lambda calcolo]]. Alcuni esempi possono essere [[Scheme]], e i vari dialetti [[ML (linguaggio di programmazione)|ML]] di questo periodo.
 
Nello stesso periodo, venne formulata la [[valutazione lazy|valutazione pigra]] (lazy evaluation, call-by-need) grazie alla pubblicazione di alcuni saggi. In seguito, questo nuovo sistema di valutazione, venne implementata in [[LazyML]], [[Clean (linguaggio)|Clean]], [[Daisy (linguaggio)|Daisy]], [[Orwell (linguaggio)|Orwell]].
 
=== Haskell ===
Riga 36 ⟶ 34:
* Basato su idee con ampio consenso;
* Ridurre la diversità nei linguaggi funzionali.
Dopo due anni, cioè il 1º aprile [[1990]], venne pubblicata la prima versione del linguaggio che verrà chiamata Haskell 1.0 in onore a [[Haskell Curry]], e l'inizio della pubblicazione inizia proprio con una citazione del famoso matematico statunitense<ref>{{Pdf|sorgente = [https://www.haskell.org/definition/haskell-report-1.0.ps.gz Report of the Programming Language Haskell A Non-Strict, Purely Functional Language, Version 1.0, 1 April 1990]}} {{Cita web|autore = |url = https://www.haskell.org/definition/haskell-report-1.0.ps.gz|titolo = Report of the Programming Language Haskell A Non-Strict, Purely Functional Language, Version 1.0|accesso = |data = 1990}} </ref>.
 
=== Haskell 98 ===
Dopo numerose versioni (1.1, 1.2, 1.3, 1.4) che si susseguirono tra il [[1988|1990]] ed il [[1998]], c'era il bisogno di creare una versione stabile, considerato che i numerosi problemi che affliggevano il linguaggio, come quelli relativi all [[Input/output|I/O]], erano stati superati.
 
Nel [[1998]] fu pubblicato ''"The Haskell 98 Report: Language and Libraries"''<ref name=":0">{{Cita web|url = https://www.haskell.org/onlinereport/|titolo = The Haskell 98 Language Report|accesso = 30 gennaio 2016|sito = www.haskell.org}}</ref>, che contiene la descrizione dello standard e di alcune librerie, il quale verrà ulteriormente revisionato da Simon Peyton Jones e ripubblicato nel [[2002]].
 
=== Haskell 2010 ===
Nel [[2006]] fu creato il comitato '''Haskell Prime''' ('''Haskell'''')<ref>{{Cita web|url = https://prime.haskell.org/|titolo = Haskell Prime|accesso = 31 gennaio 2016|sito = prime.haskell.org}}</ref>, il cui scopo è di produrre una revisione dello standard del 1998.
 
Nel [[2009]] è stata annunciata una nuova versione di Haskell chiamato Haskell 2010<ref>{{Cita web|nome = Simon|cognome = Marlow|url = https://mail.haskell.org/pipermail/haskell/2009-November/021750.html|titolo = [Haskell] Announcing Haskell 2010|accesso = 30 gennaio 2016|data = 24 novembre 2009}}</ref>. Le modifiche principali apportate furono la rimozione dell'''n+k pattern'' e l'implementazione di numerose espressioni semplificate o anche chiamate [[zucchero sintattico]] (''syntactic sugar''), come la notazione ''do'', le ''guards'', l'espressione ''if then else''.
 
== Caratteristiche ==
 
=== Valutazione Lazy ===
{{Per approfondire|Valutazione lazy}}
Riga 57 ⟶ 54:
 
=== Puramente funzionale ===
{{...}}
 
== Codice di esempio ==
Riga 135 ⟶ 133:
 
== Applicazioni ==
 
=== Industriali ===
Alcune delle principali aziende in cui viene utilizzato Haskell:<ref>{{Cita web|url = https://wiki.haskell.org/Haskell_in_industry|titolo = Haskell in industry - HaskellWiki|accesso = 25 gennaio 2016|sito = wiki.haskell.org}}</ref>
Riga 166 ⟶ 163:
 
== Note ==
<references/>
 
== Bibliografia ==
Riga 173 ⟶ 170:
 
== Voci correlate ==
 
=== Concetti correlati ===
* [[Linguaggio di programmazione]]
 
* [[Programmazione funzionale]]
* [[Tipizzazione forte]]
Riga 208 ⟶ 203:
=== Community ===
* {{Cita web|autore = |url = https://mail.haskell.org/pipermail/haskell-cafe/|titolo = Haskell-Cafe Archives|accesso = |data = }}
 
* {{Cita web|autore = |url = https://mail.haskell.org/pipermail/haskell/|titolo = Haskell Archives|accesso = |data = }}
* {{Cita web|autore = |url = https://planet.haskell.org/|titolo = Planet Haskell|accesso = |data = }}
 
{{Principali linguaggi di programmazione}}