Haskell (linguaggio di programmazione)

Haskell è un linguaggio di programmazione puramente funzionale general-purpose creato da un apposito comitato alla fine degli anni ottanta principalmente per analizzare le caratteristiche dei linguaggi. È stato chiamato così in onore del matematico e logico statunitense Haskell Curry.

Haskell è un linguaggio di programmazione puramente funzionale general-purpose creato da un apposito comitato alla fine degli anni ottanta principalmente per analizzare le caratteristiche dei linguaggi. È stato chiamato così in onore del matematico e logico statunitense Haskell Curry.

L'inizio della programmazione funzionale

Tutto iniziò nel 1978 con il discorso di John Backus intitolato "Can Programming be liberated from the Von Neumann style?" con il quale si proponeva la programmazione funzionale non solo come una mera curiosità matematica, bensì anche per scopi industriali.

Tra gli anni settanta ed 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 di questo periodo.

Nello stesso periodo, venne formulata la valutazione pigra (lazy evaluation, call-by-need) grazie alla pubblicazione di alcuni saggi. In seguito, questo nuovo sistema di valutazione, venne implementato in LazyML, Clean, Daisy, Orwell.

Haskell

Dalla metà degli anni ottanta, numerosi ricercatori richiedevano un linguaggio di programmazione puramente funzionale e basato sul concetto del call-by-need. Nel 1987, due dei principali fondatori del comitato per la creazione del nuovo linguaggio, Simon Peyton Jones e Paul Hudak, si incontrarono a Yale per proseguire verso la conferenza Functional Programming and Architecture Conference (FPAC).

Per gettare basi solide di un nuovo linguaggio standardizzato, i ricercatori riuniti al FPAC, decisero di partire da quello sviluppato da David Turner, Miranda che era già puramente funzionale e aveva una robusta implementazione. Ma Turner, visto che il linguaggio aveva già avuto una discreta diffusione, si rifiutò di separarlo in diversi dialetti. Malgrado questo fatto, Miranda, rimarrà la principale influenza di Haskell.

Il nuovo comitato venne formato a Yale nel 1988, il suo scopo fu di formulare un linguaggio che rispettasse principalmente le seguenti caratteristiche:

Adatto all'insegnamento, alla ricerca, alle applicazioni e alla costruzione di grandi sistemi;

Completamente descritto attraverso la pubblicazione di una sintassi e semantica formale;

Gratuitamente disponibile;

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.

Haskell 98

Dopo numerose versioni (1.1, 1.2, 1.3, 1.4) che si susseguirono tra il 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 I/O, erano stati superati.

Nel 1998 fu pubblicato "The Haskell 98 Report: Language and Libraries", 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'), il cui scopo è di produrre una revisione dello standard del 1998.

Nel 2009 è stata annunciata una nuova versione di Haskell chiamata Haskell 2010. 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

Tra le sue funzionalità Haskell presenta la valutazione pigra, le espressioni lambda, pattern matching, comprensione di lista, classi di tipi, e polimorfismo. È un linguaggio puramente funzionale, il che significa che le funzioni sono in genere pure, ovvero senza 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 sovraccarico, ma nel seguito usate in molti altri ambiti.

Il costrutto che rappresenta gli effetti collaterali è un esempio di monade: un quadro generale che può modellizzare vari calcoli come la gestione degli errori, il nondeterminismo, l'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.

Haskell ha una specifica aperta e pubblica e ne esistono numerose implementazioni. La principale, il Glasgow Haskell Compiler (GHC), è sia un interprete sia un compilatore di codice nativo e gira su molte piattaforme. GHC è noto per il suo ricco sistema di tipi che incorpora innovazioni recenti come i tipi di dati algebrici generalizzati e le famiglie di tipi. Il Computer Language Benchmarks Game ne evidenzia anche l'implementazione ad alte prestazioni della concorrenza e del parallelismo.

Intorno al linguaggio esiste una comunità attiva e in crescita e più di 5.400 librerie e strumenti liberi di terze parti sono disponibili in rete nell'archivio di pacchetti Hackage.

Hello, world!

Il seguente esempio stampa il testo "Hello World".

Una versione un po' più interattiva:

Calcolo del fattoriale

Classica definizione del fattoriale con pattern matching:

Un'altra definizione più ristretta, utilizzando la funzione product:

Servizi correlati

Altre voci

R

ReactOS

ReactOS (in precedenza conosciuto col nome FreeWin95) è un sistema operativo libero open source che si pone l'obiettivo di essere totalmente compatibile con il codice oggetto delle applicazioni e dei driver realizzati per Microsoft Windows NT 5 e versioni successive (Windows 2000, XP, 2003,…

Leggi la voce →
A

Android 14

Android 14 (nome in codice Upside Down Cake) è la quattordicesima versione del sistema operativo mobile Android, sviluppato dalla Open Handset Alliance, a sua volta guidata dall'azienda Google uscita il 4 ottobre 2023.

Leggi la voce →
P

Paessler PRTG

PRTG (Paessler Router Traffic Grapher fino alla versione 7) è un software di monitoraggio di rete agentless di Paessler AG. Diverse versioni software sono raccolte sotto il termine ombrello Paessler PRTG. Può monitorare e classificare condizioni di sistema come utilizzo di banda o tempo di…

Leggi la voce →
B

BlackBerry

BlackBerry (letteralmente "mora" in inglese) è il marchio commerciale ormai dismesso dei dispositivi portatili smartphone (i primi modelli, come l'850, erano cercapersone con funzionalità aggiuntive di messaggistica e agenda) prodotti dalla società canadese BlackBerry Limited (precedentemente…

Leggi la voce →
G

Google Traduttore

Google Traduttore è un servizio di traduzione automatica multilingue sviluppato da Google LLC. Offre un'interfaccia web, app mobili per Android e iOS e un'API che aiuta gli sviluppatori a creare estensioni del browser e applicazioni software. Google Traduttore supporta oltre 100 lingue a vari…

Leggi la voce →
I

IOS 4

iOS 4 è la quarta versione del sistema operativo per dispositivi mobili iOS, sviluppato dalla Apple Inc. e successore di iPhone OS 3. È stato pubblicato il 21 giugno 2010 ed è stato il primo aggiornamento a essere rinominato in "iOS", invece che "iPhone OS". Con la quarta versione di iOS, alcuni…

Leggi la voce →