Haskell (programozási nyelv)
funkcionális programozási nyelv / From Wikipedia, the free encyclopedia
A Haskell tisztán funkcionális, lusta kiértékelésű, polimorf típusokat és magasabb rendű függvényeket tartalmazó programozási nyelv. A nyelv ezzel meglehetősen különbözik a ma általában használatos nyelvektől. A nyelv Haskell Brooks Curry amerikai matematikusról kapta a nevét, aki a matematikai logikában kifejtett munkássága révén hozzájárult a funkcionális nyelvek elméleti alapjainak fejlődéséhez. A Haskell nyelv alapja a lambda-kalkulus.
Haskell | |
Paradigma | funkcionális, lusta kiértékelés, moduláris |
Jellemző kiterjesztés | .hs , .lhs |
Megjelent | 1990 |
Tervező | Simon Peyton Jones, Lennart Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, Paul Hudak, John Hughes, Thomas Johnsson, Mark Jones, John Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman, Philip Wadler |
Fejlesztő |
|
Utolsó kiadás | Haskell 2010 (2010. július)[1] |
Típusosság | statikusan típusos, erősen típusos, inferred |
Dialektusok | Helium, Gofer, Hugs, Ωmega |
Megvalósítások | GHC, Hugs, NHC, JHC, Yhc, UHC |
Hatással volt rá | Alfl, APL, Clean,[2] FP,[2] Gofer,[2] Hope és Hope+,[2] Id,[2] ISWIM,[2] KRC,[2] Lisp,[2] Miranda,[2] ML and Standard ML,[2] Lazy ML, Orwell, Ponder, SASL,[2] SISAL,[2] Scheme[2] |
Befolyásolt nyelvek | Agda, Bluespec, Clojure, C#, CAL, Cayenne, Clean, CoffeeScript, Curry, Epigram, Escher, F#, Factor, Isabelle, Java Generics, Kaya, LINQ, Mercury, Omega, Perl 6, Python, Qi, Rust, Scala, Timber, Visual Basic 9.0 |
Operációs rendszer | multi-platform |
Weboldal |
A nyelv tömörségét és kifejezőképességét bemutató rövid példaprogram, a gyorsrendezés megvalósítása:
gyorsRendezes [] = []
gyorsRendezes (x:xs) = gyorsRendezes kisebbElemek ++
[x] ++ (gyorsRendezes nemKisebbElemek)
where
kisebbElemek = filter (<x) xs
nemKisebbElemek = filter (>=x) xs
A (rekurzív) algoritmus a következő: Ha üres a lista, akkor rendezett. Egyébként vesszük az első elemet és sorban összefűzzük a kisebb elemek rendezett listáját, az elemet tartalmazó listát, valamint a nem kisebb elemek rendezett listáját. (Itt [] az üres lista, x a paraméterként átadott lista első eleme, xs a maradék lista, ++ a lista-összefűzés operátora. Az utolsó előtti sorban a halmazjelölés-szerű lista előállító konstrukció szerepel, jelentése: olyan y-ok listája, ahol y az xs eleme, és y kisebb mint x.)