www.wikidata.uk-ua.nina.az
V informatici mova programuvannya maye funkciyi pershogo klasu yaksho vona rozglyadaye funkciyi yak ob yekti pershogo klasu Zokrema ce oznachaye sho mova pidtrimuye peredachu funkcij yak argumentiv inshih funkcij povernennya yih yak rezultat inshih funkcij prisvoyuvannya yih zminnim abo zberezhennya v strukturah danih 1 Deyaki teoretiki mov programuvannya vvazhayut neobhidnoyu umovoyu takozh pidtrimku anonimnih funkcij 2 U movah z funkciyami pershogo klasu imena funkcij ne mayut niyakogo specialnogo statusu voni rozglyadayutsya yak zvichajni znachennya tip yakih ye funkcionalnim 3 Termin buv vpershe vikoristanij Kristoferom Strechi v konteksti funkciyi yak ob yekti pershogo klasu v seredini 1960 h 4 Funkciyi pershogo klasu ye nevid yemnoyu chastinoyu funkcionalnogo programuvannya v yakomu vikoristannya funkcij vishogo poryadku ye standartnoyu praktikoyu Prostim prikladom funkciyi vishogo poryadku bude funkciya Map yaka prijmaye funkciyu i spisok yak svoyi argumenti i povertaye spisok pislya zastosuvannya funkciyi do kozhnogo elementu spisku Shob mova programuvannya pidtrimuvala Map vona povinna pidtrimuvati peredachu funkcij yak argumentu Isnuyut deyaki skladnosti v realizaciyi peredachi funkcij yak argumentiv i povernennya yih yak rezultatu osoblivo za prisutnosti nelokalnih zminnih vvedenih u vkladenih i anonimnih funkciyah Istorichno voni buli nazvani problemami funarga vid anglijskogo function argument 5 U rannih imperativnih movah programuvannya ci problemi obhodilisya shlyahom vidmovi vid pidtrimki povernennya funkcij yak rezultatu abo vidmovi vid vkladenih funkcij i otzhe nelokalnih zminnih zokrema C Lisp odna z pershih funkcionalnih mov programuvannya zastosovuye pidhid dinamichnoyi oblasti vidimosti de nelokalni zminni povertayut najblizhche viznachennya cih zminnih do tochki u yakij funkciya bula viklikana zamist tochki u yakij vona bula ogoloshena Povnocinna pidtrimka dlya leksichnogo kontekstu funkcij pershogo poryadku bula vvedena v Scheme i peredbachaye obrobku posilan na funkciyi yak zamikan zamist chistih 4 sho v svoyu chergu robit neobhidnim zastosuvannya zbirki smittya Zmist 1 Koncepciyi 1 1 Funkciyi vishogo poryadku peredacha funkciyi yak argumentu 1 2 Anonimni i vkladeni funkciyi 1 3 Nelokalni zminni ta zamikannya 1 4 Funkciyi vishogo poryadku povernennya funkcij yak rezultatu 2 Div takozh 3 Primitki 4 Posilannya 5 LiteraturaKoncepciyi RedaguvatiU cij sekciyi rozglyadayetsya yak konkretni idiomi programuvannya realizuyutsya v funkcionalnih movah z funkciyami pershogo poryadku Haskell porivnyano z imperativnimi movami de funkciyi ob yekti drugogo poryadku C Funkciyi vishogo poryadku peredacha funkciyi yak argumentu RedaguvatiU movah de funkciyi ce ob yekti pershogo poryadku funkciyi mozhut buti peredani yak argumenti dlya inshih funkcij tak samo yak i bud yaki inshi znachennya Tak napriklad v Haskell map a gt b gt a gt b map f map f x xs f x map f xsMovi de funkciyi ne ye ob yektami pershogo poryadku dozvolyayut realizovuvati funkciyi vishogo poryadku za dopomogoyu vikoristannya takih prijomiv yak deleguvannya Vkazivniki u movi C z deyakimi obmezhennyami dozvolyayut buduvati funkciyi vishogo poryadku mozhna peredavati i povertati adresu imenovanoyi funkciyi ale ne mozhna porodzhuvati novi funkciyi void map int f int int x size t n for int i 0 i lt n i x i f x i Anonimni i vkladeni funkciyi RedaguvatiU movah sho pidtrimuyut anonimni funkciyi mozhna peredati taku funkciyu yak argument funkciyi vishogo poryadku main map x gt 3 x 1 1 2 3 4 5 U movah sho ne pidtrimuyut anonimni funkciyi neobhidno spershu zv yazati funkciyu z imenem int f int x return 3 x 1 int main int l 1 2 3 4 5 map f l 5 Nelokalni zminni ta zamikannya RedaguvatiYaksho mova programuvannya pidtrimuye anonimni abo vkladeni funkciyi dosit logichno pripuskati sho voni budut posilatisya na zminni za mezhami tila funkciyi main let a 3 b 1 in map x gt a x b 1 2 3 4 5 Yaksho funkciyi predstavleni u formi chistih vinikaye pitannya togo yak zhe peredavati znachennya za mezhami tila funkciyi U takomu vipadku dovoditsya buduvati zamikannya vruchnu i na comu etapi govoriti pro funkciyi pershogo klasu ne dovoditsya typedef struct int f int int int int a int b closure t void map closure t closure int x size t n for int i 0 i lt n i x i closure gt f closure gt a closure gt b x i int f int a int b int x return a x b void main int l 1 2 3 4 5 int a 3 int b 1 closure t closure f amp a amp b map amp closure l 5 Funkciyi vishogo poryadku povernennya funkcij yak rezultatu Redaguvati Pri povernenni funkciyi naspravdi vidbuvayetsya povernennya yiyi zamikannya U prikladi na S vsi lokalni zminni ukladeni v zamikannya vijdut z oblasti vidimosti yak tilki programi vijde z funkciyi yaka stanovit zamikannya Forsuvannya zamikannya v podalshomu mozhe prizvesti do neviznachenogo povedinki Div takozh RedaguvatiLyambda virazi Funkcionalnij tipPrimitki Redaguvati Abelson Harold Sussman Gerald Jay 1984 Structure and Interpretation of Computer Programs MIT Press Section 1 3 Formulating Abstractions with Higher Order Procedures ISBN 0 262 01077 1 Programming language pragmatics by Michael Lee Scott section 11 2 Functional Programming Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes The Implementation of Lua 5 0 a b Rod Burstall Christopher Strachey Understanding Programming Languages Higher Order and Symbolic Computation 13 52 2000 Joel Moses The Function of FUNCTION in LISP or Why the FUNARG Problem Should be Called the Environment Problem MIT AI Memo 199 1970 Posilannya RedaguvatiFirst class functions on Rosetta Code Higher order functions at IBM developerWorksLiteratura RedaguvatiLeonidas Fegaras Functional Languages and Higher Order Functions CSE5317 CSE4305 Design and Construction of Compilers University of Texas at Arlington Otrimano z https uk wikipedia org w index php title Funkciya pershogo klasu amp oldid 37879793