Haskell (programazio lengoaia)
Haskell | |
---|---|
Agerpena | 1990 |
Kaleratze Egonkorra | Haskell 2010 / 2010ko uztailean |
Sistema Eragilea | Plataforma anitz |
Lizentzia | BSD lizentzia |
Luzapena | .hs, .lhs |
Webgunea | https://www.haskell.org/ |
Inplementazioak | |
GHC, Hugs, NHC, UHC | |
Dialektoak | |
Helium, Gofer |
Haskell normalizatuta dagoen programazio lengoaia funtzionala da, semantika ulerkorra eta idazketa zorrotza duena. Haskell Curry logikariaren omenez du izena. Kaleratutako azken estandarra Haskell 2010 da, eta 2016ko maiatzetik, hurrengo bertsioa garatzen dabiltza, Haskell 2020 izena hartuko duena.
Haskell Miranda lengoaiaren semantikan oinarritzen da, baina ez bere sintaxian. Akademia munduan eta industrian erabili ohi da Haskell lengoaia.
Historia
[aldatu | aldatu iturburu kodea]1985. urtean Research Software Ltd enpresak Miranda kaleratu zuenean, programazio lengoai funtzionalen interesa piztu zen. 1987. urterako programazio funtzional ez zorrotz dozena bat lengoai baino gehiago garatuta zeuden. Miranda zen erabiliena, software jabeduna zena. Programazio Funtzional Lengoaien eta Konputagailuen Arkitekturaren konferentzian (FPCA '87), Portland-en, Oregon, bilera bat burutu zen batzorde bat eraikitzeko lengoai mota hauen estandar ireki bat definitzeko. Batzorde horren helburua existitzen ziren lengoai funtzionalez oinarrituta, berri bat eraikitzea zen.
Komiteak lehen bertsioa 1990. urtean definitu zuen, "Haskell 1.0" izenarekin.
2019ko irailetik aurrera, Haskell 23. programazio-lengoaia ezagunena izan zen Googleren tutoreentzako bilaketei dagokienez,[1] eta GitHub-en iturburu-kodean aktibo zeuden erabiltzaileen %1 baino gutxiago izan zen.[2]
Datu Motak
[aldatu | aldatu iturburu kodea]Int mota
[aldatu | aldatu iturburu kodea]Mota hau tarte mugatu bateko zenbaki osoak gordetzeko gai da [-2^29, 2^29 - 1] (minBound, maxBound). Eragiketak:
- + (batuketa)
- - (kenketa)
- * (biderketa)
- ^ (berredura, 3 ^ 2 = 9)
- div (zatiketa osoa 10 `div` 3 = 3)
- mod (zatiketa osoaren hondarra 10 `mod` 3 = 1)
Integer mota
[aldatu | aldatu iturburu kodea]Mota hau zenbaki osoak inolako mugarik gabe gordetzeko gai da. Eragile aritmetikoak eta propietateak, Int kasukoak ditu.
Bool mota
[aldatu | aldatu iturburu kodea]Mota honen balioak adierazpen logikoa da, hala nola, True edo False.
- && (eta)
- || (edo)
- not (ez)
Float , Double mota
[aldatu | aldatu iturburu kodea]Mota hauek zenbaki errealak gordetzeko gai dira. (Double motak zenbaki handiak eta zehaztasun hobea erabiltzen ditu). Int motako eragiketak erabiltzeaz gain:
- abs (balio absolutua)
- signum (ikurra)
- negate (ezeztatu)
Char mota
[aldatu | aldatu iturburu kodea]Mota hau karaktereak gordetzeko gai da ('A', 'd', beti apostrofo sinpleen artean)
Eragile erlazionalak
[aldatu | aldatu iturburu kodea]Jarraian erakusten diren eragile erlazionalak aipatu diren oinarrizko mota denentzat balio dute:
- == (berdin)
- /= (ezberdin)
- > (handiago)
- < (txikiago)
- >= (handiago edo berdin)
- <= (txikiago edo berdin)
Zerrendak
[aldatu | aldatu iturburu kodea]Zerrenden mota parametrodun mota da, hau da sartzen dizkiogun parametroen arabera, mota batekoa edo bestekoa izango da. Beraz aldez aurretik definitu beharra dago, baina zerrenda bateko elementu guztiak mota berekoak izan behar dute. Adibidez, [3, -6, 8 , 10], Int motako zerrenda. Beste motak bezala, zerrendek eragiketa propioak dituzte:
- [] (zerrenda hutsa)
- : (ezkerretik elementu bat erantsi)
Adibideak
[aldatu | aldatu iturburu kodea]main = putStrLn "Kaixo Mundua"
Zerrendan bilatu:
-- Elementu bat eta zerrenda bat emanda, elementua zerrendan agertzen al den ala ez
-- erabakitzen duen funtzioa.
badago:: Eq t => t -> [t] -> Bool
badago x [] = False
badago x (y:s)
| x == y = True
| x /= y = badago x s
Erreferentziak
[aldatu | aldatu iturburu kodea]- ↑ (Ingelesez) «PYPL PopularitY of Programming Language index» pypl.github.io (Noiz kontsultatua: 2020-01-22).
- ↑ www.benfrederickson.com (Noiz kontsultatua: 2020-01-22).
Kanpo estekak
[aldatu | aldatu iturburu kodea]- (Ingelesez) Webgune ofiziala