Haskell (komputillingvo): Malsamoj inter versioj

traduko de kelkaj partoj el la angla; plibonigo de ekzemploj
(en malnova varianto kodo pri faktorialo estis erararo...)
(traduko de kelkaj partoj el la angla; plibonigo de ekzemploj)
{{Informkesto programlingvo
| nomo = Haskell
| logobildo = Haskell-Logo.svg
| paradigmo = funkcia, nestrikta, modula
| jaro = 1990
| aŭtoro = [[Simon Peyton Jones]], [[Lennart Augustsson]], [[Dave Barton]], [[Brian Boutel]], [[Warren Burton (komputikisto)|Warren Burton]], [[Joseph Fasel]], [[Kevin Hammond (komputikisto)|Kevin Hammond]], [[Ralf Hinze]], [[Paul Hudak]], [[John Hughes (komputikisto)|John Hughes]], [[Thomas Johnsson]], [[Mark Jones (komputikisto)|Mark Jones]], [[John Launchbury]], [[Erik Meijer (komputikisto)|Erik Meijer]], [[John Peterson (komputikisto)|John Peterson]], [[Alastair Reid (komputikisto)|Alastair Reid]], [[Colin Runciman]], [[Philip Wadler]]
| aktuala versio = Haskell 2010 (julio 2010)
|tipa = strikita, statika
| aktuala testoversio = anoncita kiel Haskell 2014
|realigoj =
| tipa = strikita, statika, derivema
|dialektoj = [[Helium (Haskell)|Helium]], [[Gofer (software)|Gofer]], [[Hugs]], [[Ωmega]]
| realigoj = [[GHC]], [[Hugs]], [[NHC]], [[JHC]], [[Yhc]], [[UHC]]
|klaso =
| dialektoj = [[Helium (Haskell)|Helium]], [[Gofer (software)|Gofer]], [[Hugs]], [[Ωmega]]
|influita =
|influis klaso =
| influita = [[Clean]], [[FP]], [[Cofer]], [[Hope]] kaj [[Hope+|Hope<sup>+</sup>]], [[Id]], [[ISWIM]], [[KRC]], [[Lisp]], [[Miranda]], [[ML]] kaj [[Standard ML]], [[Orwell]], [[SASL]], [[SISAL]], [[Scheme]]
| influis = [[Agda]], [[Bluespec]], [[C++11]]/Concepts, [[C Sharp|C#]]/LINQ, [[CAL]], [[Cayenne]], [[Clean]], [[Clojure]], [[CoffeeScript]], [[Curry]], [[Elm]], [[Epigram]], [[Escher]], [[F Sharp|F#]], [[Frege]], [[Idris]], [[Isabelle]], [[Java]]/Generics, [[Kaya]], [[LiveScript]], [[Mercury]], [[Omega]], [[Perl 6]], [[Python]], [[Qi]], [[Scala]], [[Swift]], [[Timber]], [[Visual Basic 9.0]]
| retejo = [https://haskell.org/ haskell.org]
}}
'''Haskell''' (aŭ Esperante [[Haskelo]]) estas [[komputillingvoj|komputillingvo]] kreita de [[Paul Hudak]], [[Simon Peyton Jones]], kaj [[Philip Wadler]] en [[1987]]. Pli specife, ĝi estas [[himonimige tipizema]], nestrikta, pure funkcia lingvo. La lingvo estas nomita por [[Haskell Brooks Curry]], kies esploro pri matematika logiko estas la fundamento de [[funkciaj lingvoj]]. Haskell baziĝas de la [[lambdokalkulo]].
 
'''Haskell''' (aŭ Esperante [['''Haskelo]]''') estas [[komputillingvoj|komputillingvo]] kreita de [[Paul Hudak]], [[Simon Peyton Jones]], kaj [[Philip Wadler]] en [[1987]]. Pli specife, ĝi estas [[himonimige tipizema]], nestrikta, pure funkcia lingvo. La lingvo estas nomita por [[Haskell Brooks Curry]], kies esploro pri matematika logiko estas la fundamento de [[funkciaj lingvoj]]. Haskell baziĝas de la [[lambdokalkulo]].
Jen n! en Haskell:
 
== Historio ==
 
Post la livero de [[Miranda (programlingvo)|Miranda]] fare de Research Software Ltd, en 1985, intereso je [[nestrikta evaluo|maldiligentaj funkciaj lingvoj]] kreskis: je 1987, pli ol dek du maldiligentaj pure funkciaj programlingvoj ekzistis. El tiuj ĉi, Miranda estis la plej vaste uzata, sed ĝi estis [[mallibera programaro]]. Ĉe la konferenco pri [[Funkciaj Programlingvoj kaj Komputila Arkitekturo]] ([[angla lingvo|angle]] «Functional Programming Languages and Computer Arquitecture», FPCA, en 1987) en [[Portlando (Oregono)]], kunveno fariĝis, dum kiu partoprenantoj forte konsentis, ke komitato formiĝu por difini [[malfermita normo|malfermitan normon]] por tiaj lingvoj. La celo de la komitato estus solidigi la ekzistantajn [[funkcia lingvo|funkciajn lingvojn]] per kreo de lingvo komuna, kiu servus kiel bazo por estonta esplorado pri desegno de funkciaj lingvoj.
 
=== Haskell 1.0 ĝis 1.4 ===
 
La unua versio de Haskell («Haskell 1.0») difiniĝis en 1990. El klopodo de la komitato rezultis serio de difinoj de la lingvo (1.0, 1.1, 1.2, 1.3, 1.4).
 
=== Haskell 98 ===
 
En la malfrua 1997, la serioj kronis '''Haskell 98''', celita por specifi stabilan, minimuman, porteblan version de la lingvo kaj akompanan norman [[biblioteko (komputoscienco)|biblioteko]]n por instrui, kiel bazo por estontaj etendoj. La komitato eldire bonvenigis kreon de etendoj kaj variaĵoj de Haskell 98 per aldono kaj enmeto de eksperimentaj trajtoj.
 
En Februaro 1999, la lingvonormo Haskell 98 liveriĝis origine, kiel «The Haskell 98 Report». En Januaro 2003, reviziita versio liveriĝis kiel «Haskell 98 Language and Libraries: The Revised Report». La lingvo daŭras evoluo rapida, per la realigo [[Glasgow Haskell Compiler|Glasgow Haskell Compiler (GHC)]] reprezentanta la nuna defakta normo.<ref name=HaskellWikiImpl>{{citaĵo el la reto
| url = http://www.haskell.org/haskellwiki/Implementations
| titolo = Haskell Wiki: Implementations
| alirdato = 18a de Decembro 2012}}</ref>
 
=== Haskell Prime ===
 
En la frua 2006, la procezo por difini sekvanto por la normo Haskell 98, familiare nomata '''Haskell Prime''', komenciĝis.<ref>{{citaĵo el la reto
| url = http://hackage.haskell.org/trac/haskell-prime
| titolo = Welcome to Haskell'
| verko = The Haskell' Wiki
}}</ref> Tiu ĉi estas daŭra alkrementa procezo por revizii la difinon de la lingvo, kiu generas novan revizion inkluzive unufoje je ĉiu jaro. La unua revizio, nomata '''Haskell 2010''', anonciĝis en Novembro 2009 kaj publikiĝis en Julio 2010.
 
=== Haskell 2010 ===
 
Haskell 2010 aldonas la [[interfaco de fremdaj funkcioj|interfacon de fremdaj funkcioj]] (angle «Foreign Function Interface», FFI) al Haskell, kiu ebligas ekzisto de «bindings» al aliaj programlingvoj, fixes kelkaj aferoj pri [[sintakso (programlingvoj)|sintakso]] (ŝanĝoj en la forma gramatiko) kaj malpermesas t.n. «n-plus-k-patterns», tio signifas, ke difinoj laŭ la formo <code>fakt (n + 1) = (n + 1) * fakt n</code> ne plu permesatas. Ĝi enkondukas la ''Language-Pragma-Syntax-Extension'', kiu ebligas marki Haskell-fonton kiel Haskell 2010 aŭ postuli certajn etendojn de la lingvo Haskell. La nomoj de la etendoj enkondukitaj en Haskell 2010 estas
''DoAndIfThenElse'', ''HierarchicalModules'', ''EmptyDataDeclarations'', ''FixityResolution'', ''ForeignFunctionInterface'', ''LineCommentSyntax'', ''PatternGuards'', ''RelaxedDependencyAnalysis'', ''LanguagePragma'' and ''NoNPlusKPatterns''.
 
== Ekzempla kodo ==
 
Jen funkcio de faktorialo (<math>n!</math>) en Haskell:
<source lang="haskell">
facfakt :: Int -> Int
facfakt n | n > 0 = n * facfakt (n-1)
| otherwise = 1
</source>
 
</source>
 
Jen funkcio, kiu donas senfina [[listo]] de [[primoj]]:
Jen alia ekzemplo:
<source lang="haskell">
main = print (take 100 primoj)
 
primoj :: [Integer]
primoj = 2 : filter prima [3,5..]
where
prima n = all ((/= 0) . (n `mod`))
(takeWhile (\x -> x * x <= n) primoj)
</source>
 
== Rilataj lingvoj ==
 
* [[Clean]]
* [[Agda]]
* [[Idris (programlingvo)|Idris]]
* [[Epigram]]
* [[Cayenne (programlingvo)|Cayenne]]
* [[Ωmega]]
* [[Frege]]
* [[Jaskell]]
* [[Curry (programlingvo)|Curry]]
* [[Parallel Haskell]]
** El [[Glasgow University]]
** El [[Masaĉuseca Instituto de Teknologio|MIT]]
* [[Distributed Haskell]] (antaŭe Goffin)
* [[Eden]]
Jen* n! en[[Eager Haskell:]]
* [[Haskell++]]
* [[Mondrian]]
* [[Generic Haskell]]
* [[O'Haskell]]
* [[Timber]]
* [[Disciple]]
* [[Scotch]]
* [[Hume (programlingvo)|Hume]]
 
== Eksteraj ligiloj ==
 
* [http://www.haskell.org/ Haskell-komunumo] (''angle'')
* [http://www.haskell.org/hugs Haskella kompililo Hugs]
* [http://www.haskell.org/ghc Haskella kompililo Glasgow]
87

redaktoj