For faster navigation, this Iframe is preloading the Wikiwand page for Haskell.

Haskell

Wikipediasta

Haskell
Paradigma funktionaalinen
Tyypitys vahva, staattinen, päätelty
Muistinhallinta automaattinen
Julkaistu 1. huhtikuuta 1990[1]
Merkittävimmät toteutukset GHC, Hugs
Vaikutteet Miranda, ML
Vaikuttanut Timber
Murteet Helium
Käyttöjärjestelmä alustariippumaton
Verkkosivu www.haskell.org
Uutisryhmä comp.lang.haskell

Haskell on yleiskäyttöinen, puhtaasti funktionaalinen ohjelmointikieli, jolla on laiskan suorituksen semantiikka ja vahva staattinen tyypitys[2] ja jota alettiin kehittää vuonna 1987. Se on nimetty loogikko Haskell Curryn mukaan.[3] Kielen viimeisin standardiversio on Haskell 2010, joka korvasi aiemman standardin Haskell 98:n. Lähes kaikki kielen toteutukset tukevat standardien lisäksi omia laajennoksiaan. Haskellin tunnetuin toteutus on GHC (Glasgow Haskell Compiler).

Haskellin tyyppijärjestelmä on varustettu tyyppipäättelyllä. Tyyppiluokat ilmestyivät ensimmäisenä Haskell-kielessä.

Tällä hetkellä Haskell on saanut suosiota lähinnä akateemisissa piireissä, ja se on ainakin Yhdysvalloissa yksi suosituimpia tutkimuskäytössä olevia kieliä sekä kansainvälisesti yksi tärkeimmistä akateemisista ohjelmoinnin opetukseen käytettävistä kielistä. Tästä huolimatta kieltä käytetään jonkin verran myös kaupallisilla aloilla (mm. Credit Suisse ja Linspire [4]). Avoimen lähdekoodin projekteissa sitä käytetään hyvin vähän, joskin muutama merkittävä poikkeus löytyy, kuten Audrey Tangin Pugs (Perl 6:n kääntäjä) sekä Darcs (hajautettu versionhallintajärjestelmä).

1980-luvun vaihteessa laiskan suorituksen funktionaaliset kielet tulivat uuden mielenkiinnon kohteeksi uusien tutkimusjulkaisujen myötä. Kiinnostus ajatukseen käyttää niitä todellisten ohjelmistojen kirjoittamiseen kasvoi. Syntyikin monia laiskoja funktionaalisia kieliä, joita pidettiin suunnilleen samanlaisina lukuun ottamatta syntaksia. Niiltä kaikilta, pois lukien Miranda, puuttui kriittinen massa käyttäjien, toteuksien ja suunnittelupyrkimysten suhteen. Vuonna 1987 FPCA-konferenssissa alettiin keskustella uuden yhteisen funktionaalisen kielen suunnittelemisesta, josta kaikkien näitten kielien yhteisöt voisivat hyötyä. Asiaa päätettiin edistää perustamalla komitea. Tämän komitean työstä syntyi Haskell.[1]

Haskellin versiot 1.0:stä 1.4:ään

[muokkaa | muokkaa wikitekstiä]

Haskellin ensimmäinen versio ('Haskell 1.0') julkaistiin vuonna 1990. Versioiden 1.1 ja 1.2 muutokset olivat vähäisiä, mutta vuoden 1996 julkaistun version 1.3 muutokset olivat merkittävämpiä. Silloin se sai mm. standardikirjaston ja monadinen I/O teki ensiesiintymisensä. (Vastoin yleistä käsitystä se ei siis ole ollut aina osa kielen käyttämää siirrännän toteutusta.) Vuonna 1997 julkaistu versio 1.4 oli muutoksiltaan vähämerkityksinen.[1]

Vuoden 1999 helmikuussa julkaistiin Haskellin 98 -versio. Sen merkitys oli siinä, että se kuvasti sitoutumista vakauteen kielessä, mikä oli tarpeen Haskellin käyttämiseksi opetuksessa ja käytännön sovelluksissa. Samana vuonna Haskell-komitea lopetti toimintansa, minkä jälkeen päätöksen tekoon pystyi vaikuttamaan yksinkertaisesti osallistumalla keskusteluihin Haskellin sähköpostilistalla.[1]

Ominaisuuksia

[muokkaa | muokkaa wikitekstiä]

Haskellin ominaisuuksiin kuuluu laiska suoritus vakiona, hahmonsovitus (engl. pattern matching), listakeräelmät (engl. list comprehension), tyyppiluokat, tyyppipolymorfismi ja tyyppipäättely. Kieli on puhtaasti funktionaalinen, mikä tarkoittaa, että funktioilla ei ole sivuvaikutuksia. Sivuvaikutusten, kuten syötteen lukemiseen ja tulostamiseen, on Haskellissa omat rakenteensa.

Kuten monet muutkin funktionaaliset kielet, Haskell tukee anonyymeja funktioita, korkeamman asteen funktioita ja funktiot voivat olla sekä funktioiden parametreja että niiden arvoja.

Funktionaalisten ohjelmointikielien vastine hei maailma -ohjelmalle on kertomafunktio. Haskell-versio:

 kertoma :: Integer -> Integer
 kertoma 0 = 1
 kertoma n = n * kertoma (n - 1)

Ensimmäisellä rivillä ilmaistaan, että funktion tyyppi on Integer -> Integer. Se tarkoittaa sitä, että funktio ottaa argumenttinaan yhden kokonaisluvun ja palauttaa toisen. (Näitä tyyppimäärittelyjä ei yleensä ole pakko kirjoittaa, sillä kääntäjät pystyvät yleensä päättelemään ne itse.) Toisella rivillä ilmaistaan, että nollan kertoma on yksi. Kolmas rivi kertoo, että lauseke kertoma n on arvoltaan sama kuin lausekkeen n * kertoma (n - 1) arvo. Haskellissa yhtäsuuruusmerkki siis tarkoittaa yhtäsuuruutta, kuten matematiikassakin. Siispä voi suoraan laskea että kertoma 2 = 2 * kertoma 1 = 2 * 1 * kertoma 0 = 2 * 1 * 1 = 2.

  • Paul Hudak, John Hughes, Simon Peyton Jones, Philip Wadler: A History of Haskell: Being Lazy with Class. Proceedings of the third ACM SIGPLAN conference on History of programming languages (HOPL III), , 2007. vsk. doi:10.1145/1238844.1238856. Artikkelin verkkoversio (PDF). (englanniksi)
  1. a b c d A History of Haskell: Being Lazy with Class. 2007, sivut 2-5.
  2. The Haskell 98 Report: Introduction www.haskell.org. Viitattu 30.12.2017.
  3. Preface www.haskell.org. Viitattu 30.12.2017.
  4. CUFP 2006 Abstracts cufp.galois.com. Arkistoitu 12.7.2007. Viitattu 25.6.2007. (englanniksi)

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]
{{bottomLinkPreText}} {{bottomLinkText}}
Haskell
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?