Movatterモバイル変換


[0]ホーム

URL:


Siirry sisältöön
Wikipedia
Haku

Haskell

Wikipediasta
Haskell
Paradigmafunktionaalinen
Tyypitysvahva, staattinen, päätelty
Muistinhallintaautomaattinen
Julkaistu1. huhtikuuta1990[1]
Merkittävimmät toteutuksetGHC,Hugs
VaikutteetMiranda,ML
VaikuttanutTimber
MurteetHelium
Käyttöjärjestelmäalustariippumaton
Verkkosivuwww.haskell.org
Uutisryhmäcomp.lang.haskell
Infobox OK

Haskell on yleiskäyttöinen, puhtaastifunktionaalinenohjelmointikieli, jolla onlaiskan suorituksen semantiikka ja vahva staattinen tyypitys[2] ja jota alettiin kehittää vuonna 1987. Se on nimetty loogikkoHaskell 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 onGHC (Glasgow Haskell Compiler).

Haskellintyyppijärjestelmä on varustettutyyppipäättelyllä.Tyyppiluokat ilmestyivät ensimmäisenä Haskell-kielessä.

Tällä hetkellä Haskell on saanut suosiota lähinnä akateemisissa piireissä, ja se on ainakinYhdysvalloissa 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 jaLinspire[4]).Avoimen lähdekoodin projekteissa sitä käytetään hyvin vähän, joskin muutama merkittävä poikkeus löytyy, kuten Audrey TanginPugs (eräsRaku:n kääntäjä) sekäDarcs (hajautettu versionhallintajärjestelmä).

Historia

[muokkaa |muokkaa wikitekstiä]

1980-luvun vaihteessalaiskan 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 lukienMiranda, 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]

Haskell 98

[muokkaa |muokkaa wikitekstiä]

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 jatyyppipäättely. Kieli on puhtaasti funktionaalinen, mikä tarkoittaa, että funktioilla ei olesivuvaikutuksia. Sivuvaikutusten, kuten syötteen lukemiseen ja tulostamiseen, on Haskellissa omat rakenteensa.

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

Esimerkki

[muokkaa |muokkaa wikitekstiä]

Funktionaalisten ohjelmointikielien vastinehei maailma -ohjelmalle onkertomafunktio. Haskell-versio:

kertoma::Integer->Integerkertoma0=1kertoman=n*kertoma(n-1)

Ensimmäisellä rivillä ilmaistaan, että funktion tyyppi onInteger -> 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ä lausekekertoma n on arvoltaan sama kuin lausekkeenn * 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.

Lähteet

[muokkaa |muokkaa wikitekstiä]
  • 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), 16.4.2007, 2007. vsk. doi:10.1145/1238844.1238856 Artikkelin verkkoversio. (PDF) (englanniksi)

Viitteet

[muokkaa |muokkaa wikitekstiä]
  1. abcdA 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ä]
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheestaHaskell.
Tuotantokäytössä
Akateemiset
Historialliset
Kansalliset
Muut
Noudettu kohteesta ”https://fi.wikipedia.org/w/index.php?title=Haskell&oldid=23821350
Luokka:
Piilotetut luokat:

[8]ページ先頭

©2009-2026 Movatter.jp