www.wikidata.uk-ua.nina.az
Haskell ukr Gaskel Gaskell standartizovana vinyatkovo funkcijna mova programuvannya z nestrogoyu semantikoyu Nazvana na chest amerikanskogo matematika Gaskella Karri roboti yakogo v galuzi matematichnoyi logiki ye bazovimi dlya funkcijnogo programuvannya Gaskel bazuyetsya na lyambda chislenni Najvazhlivishimi realizaciyami ye kompilyator Glasgow Haskell Compiler GHC ta osnovanij na nomu kompilyator GHCJS sho kompilyuye Gaskel kod u skript movoyu JavaScript Istorichno vazhlivim takozh ye interpretator Hugs ale na sogodni vin ne pidtrimuyetsya HaskellParadigma funkcijna ne stroga modulnaData poyavi 1990Tvorci Lennart Augustssond Warren Burtond Kevin Hammondd Paul Hudakd John Hughesd Thomas Johnssond Sajmon Pejton Dzhons John Launchburyd Erik Meijerd Alastair Reidd i Philip WadlerdRozrobnik Paul Hudakd 1 Lennart Augustssond 2 John Hughesd 3 Sajmon Pejton Dzhons 4 Erik Meijerd 4 i Philip Wadlerd 4 Ostannij reliz Haskell 2010 lipen 2010 5 Sistema tipizaciyi silna statichnaOsnovni realizaciyi GHC GHCJS Hugs NHC JHC YhcDialekti Pid vplivom vid APL Lisp Miranda ML Gofer SchemeVplinula na Clojure C F Java Generics LINQ Perl 6 Python ScalaOperacijna sistema Windows i UNIX podibni operacijni sistemiZvichajni rozshirennya fajliv hs abo lhsVebsajt haskell org Haskell u Vikishovishi Zmist 1 Istoriya 2 Zastosuvannya 3 Osoblivosti 3 1 Robota program 3 2 Sistema tipiv 3 3 Sintaksis 3 4 Programuvannya 3 5 Moduli 4 Prikladi 4 1 Faktorial 4 2 Chisla Fibonachchi 4 3 Shvidke sortuvannya 5 Sporidneni programi ta instrumenti 6 Div takozh 7 Vinoski 8 Literatura 9 PosilannyaIstoriya RedaguvatiNa kinec 1980 ih rokiv vzhe isnuvali deyaki funkcijni movi programuvannya z vlasnimi perevagami ta nedolikami Dlya togo abi nauka otrimala yedinu osnovu dlya doslidzhen slid bulo rozrobiti standartizovanu suchasnu funkcijnu movu programuvannya Todi planuvalos vikoristati movu programuvannya Miranda yak vihidnij variant odnak yiyi rozrobniki buli v comu ne zacikavleni Tak v 1990 roci i z yavilas mova programuvannya Haskell 1 0 Potochna versiya movi programuvannya ye pereroblenim variantom standarta Haskell 98 1999 roku Zaraz Gaskel ye funkcijnoyu movoyu programuvannya yaka shiroko vikoristovuyetsya yak dlya doslidzhen tak i dlya realizaciyi komercijnih proektiv Krim togo isnuye velika kilkist variantiv movi programuvannya Parallel Haskell Distributed Haskell ranishe Gofin Eager Haskell Eden DNA Haskell a takozh ob yektno oriyentovani varianti Haskell O Haskell Mondrian Dlya inshih Gaskel buv prikladom pri rozrobci movi programuvannya Napriklad u vipadku movi programuvannya Python bulo zapozichenno koncepciyu Lyambda notaciyi ta sintaksis roboti zi spiskami Zastosuvannya RedaguvatiNezvazhayuchi na porivnyano neveliku spilnotu Gaskelya vin uzhe pokazav svoyi silni storoni u dekilkoh proektah Pugs realizaciya dovgoochikuvanoyi movi programuvannya Raku z interpretatorom ta kompilyatorom yaki pokazali korisnist Gaskelya lishe cherez kilka misyaciv vid napisannya takozh GHC chasto vikoristovuyetsya yak viprobuvalnij stend dlya peredovih mozhlivostej funkcijnogo programuvannya ta optimizacij Darcs sistema keruvannya versiyami yaka maye kilka innovacijnih osoblivostej Linspire GNU Linux vikoristovuye Gaskel dlya rozrobki sistemnih utilit 6 xmonad menedzher vikon dlya X Window System cilkom napisanij na Gaskeli Osoblivosti RedaguvatiRobota program Redaguvati Gaskel ye chistoyu funkcijnoyu movoyu programuvannya Funkciyi ne mayut zhodnih pobichnih efektiv Ce oznachaye sho dlya odnih i tih samih znachen vhidnih parametriv zavzhdi povertatimutsya odnakovi rezultati obchislen Funkcijni movi programuvannya vidriznyayutsya vid imperativnih mov programuvannya tim sho programist ne povinen viznachati poryadok obchislennya funkcij Rozrobniku slid lishe opisati zalezhnist mizh danimi a translyator vzhe samotuzhki viznachaye poryadok obchislen na imperativnomu obchislyuvalnomu pristroyi Vidsutni bud yaki imperativni konstrukciyi movi programuvannya Zavdyaki monadam mozhlivo vikonuvati operaciyi vvodu vivodu inshi obchislennya yaki vimagayut zberezhennya stanu v chisto funkcijnomu viglyadi Vidsutni operatori zmini znachennya zminnih Cherez ce vidsutnya riznicya mizh konstantami ta zminnimi Yak naslidok vidpadaye neobhidnist u deklaraciyi const abo final yaki ye napriklad v movah programuvannya Si ta Java vidpovidno Vidsutnya riznicya mizh identichnistyu ta rivnistyu ob yektiv Usunennya problem vid nayavnosti pobichnih efektiv znachnoyu miroyu polegshuye sposterezhennya za poslidovnistyu roboti programi Gaskel ye nestrogoyu movoyu programuvannya Obchislyuyutsya lishe virazi znachennya yakih neobhidne dlya obchislennya rezultativ first x y x square x x x Funkciya first pri vikliku z dvoma parametrami povertaye znachennya pershogo Pri vikliku first x 3 7 obchislennya znachennya sumi 3 7 ne potribne dlya obchislennya rezultata i tomu mozhe ne vikonuvatis Funkciya square povertaye znachennya kvadrata peredanogo parametra Pri obchislenni square 3 5 funkciya maye obchisliti 3 5 3 5 odnak podvijne obchislennya 3 5 ne ye optimalnim i maye unikatis Realizaciya linivih obchislen polegshuyetsya vidsutnistyu pobichnih efektiv ta strogim dotrimannyam paradigmi funkcijnogo programuvannya Sistema tipiv Redaguvati Gaskel ye silno tipizovanoyu movoyu programuvannya Rozriznyayutsya cili chisla z ruhomoyu komoyu ryadkovi ta inshi tipi danih Pidrimuyutsya zminni tipiv Zavdyaki comu mozhna robiti uzagalneni formulyuvannya funkcij U vipadku koli taka zagalna funkciya zastosovuyetsya do zminnih z konkretnim tipom avtomatichno viznachayutsya i tipi rezultativ reshti obchislen Funkciya map vikonuye nadanu funkciyu dlya kozhnogo elementa zi spisku Yiyi tip maye viglyad map a gt b gt a gt b U vipadku yaksho map bude viklikano iz funkciyeyu toUpper yaka maye tip Char gt Char vona matime tip map toUpper Char gt Char Iz samogo pochatku Gaskel ye movoyu programuvannya zi statichnoyu tipizaciyeyu hocha isnuyut varianti z dinamichnoyu tipizaciyeyu Ce znachit sho dlya bilshosti obchislen tipi argumentiv vidomi vzhe na etapi translyaciyi Ce dopomagaye uniknuti ochevidnih pomilok she do pochatku obchislen Gaskel pidtrimuye funkciyi vishogo poryadku funkcionali Tobto funkciyi yaki mozhut prijmati yak argumenti j povertati yak rezultati funkciyi Odnim iz prikladiv ye funkciya map yaka obchislyuye nadanu funkciyu f dlya kozhnogo elementa odnogo tipu tut spiska map a gt b gt a gt b map f map f x xs f x map f xs map square 1 2 3 square 1 square 2 square 3 1 4 9 Pidtrimuyetsya viznachennya tipiv danih koristuvachami Ci tipi danih viznachayutsya vikoristannyam konstruktoriv tipiv danih data Tree Int Leaf Int Branch Int Tree Int Tree Int V prikladi navedeno strukturu danih derev z napovenene cilimi chislami Takim chinom derevo Tree Int skladayetsya abo iz lista Leaf Int abo vidgaluzhennya Branch Int t1 t2 de t1 ta t2 mistyat piddereva sho mayut strukturu danih Tree Int Dlya viznachennya ciyeyi strukturi danih treba takozh viznachiti konstruktor Leaf z odnim parametrom ta konstruktor Branch z troma parametrami Funkciyi dozvolyayut karring V toj chas yak v inshih movah programuvannya yak argumenti funkciyi peredayutsya kortezhi tobto tipi funkcij mayut viglyad a b gt c v Gaskel prijnyato vikoristovuvati Karri podibnu formu a gt b gt c Zavdyaki comu staye mozhlivim chastkove obchislennya znachennya funkcij Viraz map toUpper ye prikladom chastkovogo obchislennya map oskilki vin viznachaye funkciyu a same funkciyu sho perevodit vsi literi u verhnij registr Gaskel pidtrimuye klasi tipiv Zavdyaki klasifikaciyi tipiv mozhna viznachiti spilni operaciyi dlya tipiv odnogo klasu V signaturah funkcij mozhut buti prisutni yak argumenti konkretnogo tipu primirom Char ta beztipovimi zminnimi viznachatis argumenti z yavno zadanimi obmezhennyami tipiv Vsi zastosuvannya metodu z klasami tipiv mayut odnakove im ya Ce v deyakomu sensi vidpovidaye peregruzci funkcij Im ya pevnoyi funkciyi zalezhit vid tipiv argumentiv Napriklad metod klasu Eq porivnyuye yak paru cifr tak i paru ryadkiv Odnak robota cogo metodu zalezhit vid tipiv argumentiv Sintaksis Redaguvati Rozriznyayetsya registr liter Identifikatori sho pochinayutsya z velikih liter oznachayut tipi ta konstruktori Identifikatori sho pochinayutsya z maloyi literi oznachayut zminni funkciyi ta parametri Gaskel proponuye ryad sintaksichnih osoblivostej Voni mayut dopomagati vislovlyuvati vse vidpovidno do funkcijnoyi paradigmi Zamist readFile input txt gt gt writeFile output txt abo readFile input txt gt gt content gt writeFile output txt content mozhna takozh napisati do content lt readFile input txt writeFile output txt content Yak simvolni taki yak gt lt tak i alfavitno cifrovi identifikatori literi cifri apostrof mozhut vikoristovuvatis i yak nazvi funkcij i yak infiksni ta postfiksni operatori Napriklad mozhna pisati a b a b a div b div a b Programuvannya Redaguvati Gaskel pidtrimuye poshuk po shablonah Tobto yak formalni parametri mozhna peredavati shabloni Pri comu opisani shabloni stayut argumentami funkciyi fac Integer gt Integer fac 0 1 fac n n fac n 1 Funkciya fac obchislyuye faktorial chisla Pri vikliku funkciyi z parametrom sho dorivnyuye 0 bude povernuta 1 Dlya vsih inshih vipadkiv obchislennya faktoriala vidbuvayetsya shlyahom rekursivnogo vikliku n fac n 1 V comu prikladi 0 ta 1 ye shablonami vid zbigu z yakimi zalezhit rezultat obchislen Moduli Redaguvati Gaskel takozh maye sistemu moduliv Isnuye velika kilkist moduliv v yakih realizovano bagato korisnih funkcij Odin iz najpovnishih perelikiv isnuyuchih moduliv mistitsya v Haskell Reference Arhivovano 16 listopada 2006 u Wayback Machine angl Dlya togo abi vikoristati modul neobhidno jogo importuvati Ce robitsya z vikoristannyam klyuchovogo slova import import List import Maybe Rizni moduli mozhut mistiti funkciyi ta tipi z odnakovimi nazvami Ci identifikatori mozhna rozriznyati shlyahom importuvannya lishe odnogo identifikatora import Data List delete x delete a abc vikoristannyam povnoyi razom iz modulem nazvi identifikatora import qualified Data List x Data List delete a abc abo import qualified Data List as List x List delete a abc Mozhlivim ale ne bazhanim ye prihovuvannya identifikatoriv deklaraciyami hiding Prikladi RedaguvatiFaktorial Redaguvati Elegantne viznachennya funkciyi faktorialu yake vikoristovuye notaciyu Gaskelya dlya spiskiv fac Integer gt Integer fac n product 1 n Chisla Fibonachchi Redaguvati Nayivna realizaciya funkciyi obchislennya n chisla z Poslidovnosti Fibonachchi fib Integer gt Integer fib 0 0 fib 1 1 fib n fib n 2 fib n 1 Shvidsha realizaciya obchislennya poslidovnosti fibs Integer fibs 0 1 zipWith fibs tail fibs Shvidke sortuvannya Redaguvati Algoritm shvidkogo sortuvannya zapisuyetsya movoyu Gaskel tak qsort Ord a gt a gt a qsort qsort x xs qsort y y lt xs y lt x x qsort y y lt xs y gt x U pershomu ryadku viznachayetsya signatura funkciyi qsort V drugomu ryadku viznachayetsya sho rezultat zastosuvannya funkciyi dlya porozhnogo spiska ye takozh porozhnij spisok V tretomu ryadku vidbuvayetsya rekursivne sortuvannya neporozhnih spiskiv pershij element x beretsya yak serednij element rezultuyuchogo spiska Pered nim sortuyutsya vsi menshi a pislya nogo vsi bilshi elementi spiska Dlya togo abi vibrati vsi menshi ta bilshi elementi nizh x iz hvosta spiska xs vikoristano opisannya spiskiv Yak i ochikuyetsya vid algoritmu shvidkogo sortuvannya serednij asimptotichnij chas roboti cogo algoritmu dorivnyuye O n log n displaystyle O n cdot log n nbsp a chas roboti v najgirshomu vipdaku dorivnyuye O n 2 displaystyle O n 2 nbsp Na vidminu vid zvichajnih realizacij v imperativnih movah programuvannya opisana funkciya pracyuye ne peretirayuchi vhidnij masiv Sporidneni programi ta instrumenti RedaguvatiCabal ce instrument dlya zboru ta pakuvannya bibliotek ta program Gaskelya 7 Stack ce instrument dlya zbirki program ta upravlinnya zalezhnostyami komponentiv Gaskel Vin vikoristovuye biblioteku Cabal z svoyeyu versiyeyu repozitoriya Hackage yakij nazivayetsya Stackage Linspire Linux vikoristovuye Gaskel dlya programuvannya sistemnih komponent Pandoc ce programa dlya konvertuvannya bagatoh tipiv formatu markup v inshi Div takozh RedaguvatiML Pugs implementaciya Perl versiyi 6 na Gaskel Sistema F Funkcijne programuvannyaVinoski Redaguvati http news yale edu 2015 04 30 memoriam paul hudak computer scientist and saybrook college master http softwareengineeringdaily com 2015 11 05 haskell with lennart augustsson http www cse chalmers se rjmh Software h html a b v A history of Haskell being lazy with class SIGPLAN 2007 d Track Q3412172 Haskell Announcing Haskell 2010 2009 Linspire Freespire Core OS Team and Haskell Debian Haskell mailing list May 2006 Arhiv originalu za 25 chervnya 2013 Procitovano 18 listopada 2007 https www haskell org cabal Propushenij abo porozhnij title dovidka Literatura RedaguvatiWhy Functional Programming Matters by John Hughes The Computer Journal Vol 32 No 2 1989 pp 98 107 1 Perevagi funkcijnogo programuvannya Navodyatsya prikladi modulnosti program na osnovi funkcij vishogo poryadku ta linivih obchislen Simon Thompson Haskell The Craft of Functional Programming 1999 Addison Wesley ISBN 0 201 34275 8 Paul Hudak The Haskell School of Expression Learning Functional Programming Through Multimedia 2000 Cambridge University Press ISBN 0 521 64338 4 Miran Lipovacha Vivchit sobi Gaskela na velike shastya Arhivovano 2 bereznya 2021 u Wayback Machine pereklad ukrayinskoyu http learnyouahaskell com Arhivovano 12 sichnya 2021 u Wayback Machine Posilannya Redaguvatihttp www haskell org Centralnij portal movi programuvannya Gaskel https web archive org web 20061011005609 http www haskell org learning html Korisna informaciya dlya vivchennya Gaskel http www haskell org hugs Arhivovano 3 lyutogo 2006 u Wayback Machine Hugs 98 bezkoshtovnij interpretator Gaskel https web archive org web 20080915054919 http haskell readscheme org Naukova literatura pro Gaskel http haskell trygub com Arhivovano 2 bereznya 2021 u Wayback Machine sajt kniga Vivchit sobi Gaskela na velike shastya Otrimano z https uk wikipedia org w index php title Haskell amp oldid 40544980