Поддерживать
www.wikidata.ru-ru.nina.az
Funkciona lnoe programmi rovanie paradigma programmirovaniya v kotoroj process vychisleniya traktuetsya kak vychislenie znachenij funkcij v matematicheskom ponimanii poslednih v otlichie ot funkcij kak podprogramm v procedurnom programmirovanii Protivopostavlyaetsya paradigme imperativnogo programmirovaniya kotoraya opisyvaet process vychislenij kak posledovatelnoe izmenenie sostoyanij v znachenii podobnom takovomu v teorii avtomatov Pri neobhodimosti v funkcionalnom programmirovanii vsya sovokupnost posledovatelnyh sostoyanij vychislitelnogo processa predstavlyaetsya yavnym obrazom naprimer kak spisok Funkcionalnoe programmirovanie predpolagaet obhoditsya vychisleniem rezultatov funkcij ot ishodnyh dannyh i rezultatov drugih funkcij i ne predpolagaet yavnogo hraneniya sostoyaniya programmy Sootvetstvenno ne predpolagaet ono i izmenyaemost etogo sostoyaniya v otlichie ot imperativnogo gde odnoj iz bazovyh koncepcij yavlyaetsya peremennaya hranyashaya svoyo znachenie i pozvolyayushaya menyat ego po mere vypolneniya algoritma Na praktike otlichie matematicheskoj funkcii ot ponyatiya funkcii v imperativnom programmirovanii zaklyuchaetsya v tom chto imperativnye funkcii mogut opiratsya ne tolko na argumenty no i na sostoyanie vneshnih po otnosheniyu k funkcii peremennyh a takzhe imet pobochnye effekty i menyat sostoyanie vneshnih peremennyh Takim obrazom v imperativnom programmirovanii pri vyzove odnoj i toj zhe funkcii s odinakovymi parametrami no na raznyh etapah vypolneniya algoritma mozhno poluchit raznye dannye na vyhode iz za vliyaniya na funkciyu sostoyaniya peremennyh A v funkcionalnom yazyke pri vyzove funkcii s odnimi i temi zhe argumentami my vsegda poluchim odinakovyj rezultat vyhodnye dannye zavisyat tolko ot vhodnyh Eto pozvolyaet sredam vypolneniya programm na funkcionalnyh yazykah keshirovat rezultaty funkcij i vyzyvat ih v poryadke ne opredelyaemom algoritmom i rasparallelivat ih bez kakih libo dopolnitelnyh dejstvij so storony programmista chto obespechivayut funkcii bez pobochnyh effektov chistye funkcii Lyambda ischislenie yavlyaetsya osnovoj dlya funkcionalnogo programmirovaniya mnogie funkcionalnye yazyki mozhno rassmatrivat kak nadstrojku nad nim Yazyki funkcionalnogo programmirovaniyaNaibolee izvestnymi yazykami funkcionalnogo programmirovaniya yavlyayutsya Lisp Dzhon Makkarti 1958 i mnozhestvo ego dialektov naibolee izvestnye Scheme Clojure i Common Lisp v 1970 e gody dlya podderzhki yazyka sozdavalis specializirovannye apparatnye kompleksy lisp mashiny Erlang Dzho Armstrong 1986 funkcionalnyj yazyk s podderzhkoj processov a takzhe ego pryamoj potomok Elixir APL predshestvennik sovremennyh nauchnyh vychislitelnyh sred takih kak MATLAB ML Robin Milner 1979 i ego osnovnye dialekty Standard ML i OCaml F funkcionalnyj yazyk semejstva ML dlya platformy NET Scala yazyk platformy JVM sochetayushij vozmozhnosti funkcionalnogo i obektno orientirovannogo programmirovaniya Miranda Devid Tyorner 1985 i ego pryamoj potomok chistyj funkcionalnyj yazyk Haskell Nemerle gibridnyj funkcionalno imperativnyj yazyk Eshyo ne polnostyu funkcionalnye iznachalnye versii i Lispa i APL vnesli osobyj vklad v sozdanie i razvitie funkcionalnogo programmirovaniya Bolee pozdnie versii Lisp takie kak Scheme a takzhe razlichnye varianty APL podderzhivali vse svojstva i koncepcii funkcionalnogo yazyka Kak pravilo interes k funkcionalnym yazykam programmirovaniya osobenno chisto funkcionalnym byl skoree nauchnyj nezheli kommercheskij Odnako takie primechatelnye yazyki kak Erlang OCaml Haskell Scheme posle 1986 a takzhe specificheskie R statistika Wolfram simvolnaya matematika J i K finansovyj analiz i XSLT XML nahodili primenenie v industrii kommercheskogo programmirovaniya Takie shiroko rasprostranyonnye deklarativnye yazyki kak SQL i Lex Yacc soderzhat nekotorye elementy funkcionalnogo programmirovaniya naprimer ne ispolzuyut peremennyh Yazyki raboty s elektronnymi tablicami takzhe mozhno rassmatrivat kak funkcionalnye potomu chto v yachejkah elektronnyh tablic zadayotsya massiv funkcij kak pravilo zavisyashih lish ot drugih yacheek a pri zhelanii smodelirovat peremennye prihoditsya pribegat k vozmozhnostyam imperativnogo yazyka makrosov IstoriyaLyambda ischislenie stalo teoreticheskoj bazoj dlya opisaniya i vychisleniya funkcij Yavlyayas matematicheskoj abstrakciej a ne yazykom programmirovaniya ono sostavilo bazis pochti vseh yazykov funkcionalnogo programmirovaniya na segodnyashnij den Shodnoe teoreticheskoe ponyatie kombinatornaya logika yavlyaetsya bolee abstraktnym nezheli l ischisleniya i bylo sozdano ranshe Eta logika ispolzuetsya v nekotoryh ezotericheskih yazykah naprimer v Unlambda I l ischislenie i kombinatornaya logika byli razrabotany dlya bolee yasnogo i tochnogo opisaniya principov i osnov matematiki Pervym funkcionalnym yazykom byl Lisp sozdannyj Dzhonom Makkarti v period ego raboty v Massachusetskom tehnologicheskom institute v konce pyatidesyatyh i realizovannyj pervonachalno dlya IBM 700 7000 V Lispe vpervye vvedeno mnozhestvo ponyatij funkcionalnogo yazyka hotya pri etom v yazyke primenyaetsya ne tolko paradigma funkcionalnogo programmirovaniya Dalnejshim razvitiem Lispa stali takie yazyki kak Scheme i Dylan Yazyk obrabotki informacii angl IPL inogda opredelyaetsya kak samyj pervyj mashinnyj funkcionalnyj yazyk Eto yazyk assemblernogo tipa dlya raboty so spiskom simvolov V nyom bylo ponyatie generatora kotoryj ispolzoval funkciyu v kachestve argumenta a takzhe poskolku eto yazyk assemblernogo urovnya on mozhet pozicionirovatsya kak yazyk imeyushij funkcii vysshego poryadka Odnako v celom IPL akcentirovan na ispolzovanie imperativnyh ponyatij Kennet Ajverson razrabotal yazyk APL v nachale shestidesyatyh dokumentirovav ego v svoej knige A Programming Language ISBN 978 0 471 43014 8 APL okazal znachitelnoe vliyanie na yazyk angl sozdannyj Dzhonom Bekusom V nachale devyanostyh Ajverson i angl sozdali preemnika APL yazyk programmirovaniya J V seredine devyanostyh angl ranee rabotavshij s Ajversonom sozdal yazyk K kotoryj vposledstvii ispolzovalsya v finansovoj industrii na kommercheskoj osnove V 1970 h godah v universitete Edinburga Robin Milner sozdal yazyk ML a Devid Terner nachinal razrabotku yazyka SASL v universitete Sent Endryusa i vposledstvii yazyk Miranda v universitete goroda Kent V konechnom itoge na osnove ML byli sozdany neskolko yazykov sredi kotoryh naibolee izvestnye Objective Caml i Standard ML Takzhe v semidesyatyh osushestvlyalas razrabotka yazyka programmirovaniya postroennogo po principu Scheme realizaciya ne tolko funkcionalnoj paradigmy poluchivshego opisanie v izvestnoj rabote Lambda Papers a takzhe v knige vosemdesyat pyatogo goda Structure and Interpretation of Computer Programs V 1972 godu Per Martin Lyof sozdal intuicionistskuyu teoriyu tipov takzhe nazyvaemuyu konstruktivnoj V etoj teorii funkcionalnoe programmirovanie poluchilo konstruktivnoe dokazatelstvo togo chto ranee bylo izvestno kak zavisimyj tip Eto dalo moshnyj tolchok k razvitiyu dialogovogo dokazatelstva teorem i k posleduyushemu sozdaniyu mnozhestva funkcionalnyh yazykov Haskell byl sozdan v konce 1980 h godov v popytke soedinit mnozhestvo idej poluchennyh v hode issledovaniya funkcionalnogo programmirovaniya KoncepciiNekotorye koncepcii i paradigmy specifichny dlya funkcionalnogo programmirovaniya i v osnovnom chuzhdy imperativnomu programmirovaniyu vklyuchaya obektno orientirovannoe programmirovanie Tem ne menee yazyki programmirovaniya obychno predstavlyayut soboj gibrid neskolkih paradigm programmirovaniya poetomu bolshej chastyu imperativnye yazyki programmirovaniya mogut ispolzovat kakie libo iz etih koncepcij Funkcii vysshih poryadkov Osnovnaya statya Funkciya vysshego poryadka Funkcii vysshih poryadkov eto takie funkcii kotorye mogut prinimat v kachestve argumentov i vozvrashat drugie funkcii Matematiki takuyu funkciyu chashe nazyvayut operatorom naprimer operator vzyatiya proizvodnoj ili operator integrirovaniya Funkcii vysshih poryadkov pozvolyayut ispolzovat karring preobrazovanie funkcii ot pary argumentov v funkciyu berushuyu svoi argumenty po odnomu Eto preobrazovanie poluchilo svoyo nazvanie v chest Haskella Karri Chistye funkcii Chistymi nazyvayut funkcii kotorye ne imeyut pobochnyh effektov vvoda vyvoda i pamyati oni zavisyat tolko ot svoih parametrov i vozvrashayut tolko svoj rezultat Chistye funkcii obladayut neskolkimi poleznymi svojstvami mnogie iz kotoryh mozhno ispolzovat dlya optimizacii koda esli rezultat chistoj funkcii ne ispolzuetsya eyo vyzov mozhet byt udalyon bez vreda dlya drugih vyrazhenij rezultat vyzova chistoj funkcii mozhet byt memoizirovan to est sohranyon v tablice znachenij vmeste s argumentami vyzova esli net nikakoj zavisimosti po dannym mezhdu dvumya chistymi funkciyami to poryadok ih vychisleniya mozhno pomenyat ili rasparallelit govorya inache vychislenie chistyh funkcij udovletvoryaet principam potokobezopasnosti esli ves yazyk ne dopuskaet pobochnyh effektov to mozhno ispolzovat lyubuyu politiku vychisleniya Eto predostavlyaet svobodu kompilyatoru kombinirovat i reorganizovyvat vychislenie vyrazhenij v programme naprimer isklyuchit drevovidnye struktury Blagodarya memoizacii esli v dalnejshem funkciya vyzyvaetsya s etimi zhe argumentami eyo rezultat mozhet byt vzyat pryamo iz tablicy znachenij ne vychislyayas inogda eto nazyvaetsya principom prozrachnosti ssylok Memoizaciya cenoj nebolshogo rashoda pamyati pozvolyaet sushestvenno uvelichit proizvoditelnost i umenshit poryadok rosta nekotoryh rekursivnyh algoritmov Hotya bolshinstvo kompilyatorov imperativnyh yazykov programmirovaniya raspoznayut chistye funkcii i udalyayut obshie podvyrazheniya dlya vyzovov chistyh funkcij oni ne mogut delat eto vsegda dlya predvaritelno skompilirovannyh bibliotek kotorye kak pravilo ne predostavlyayut etu informaciyu Nekotorye kompilyatory takie kak gcc v celyah optimizacii predostavlyayut programmistu klyuchevye slova dlya oboznacheniya chistyh funkcij Fortran 95 pozvolyaet oboznachat funkcii kak pure chistye Rekursiya Osnovnaya statya Rekursiya V funkcionalnyh yazykah cikl obychno realizuetsya v vide rekursii Strogo govorya v funkcionalnoj paradigme programmirovaniya net takogo ponyatiya kak cikl Rekursivnye funkcii vyzyvayut sami sebya pozvolyaya operacii vypolnyatsya snova i snova Dlya ispolzovaniya rekursii mozhet potrebovatsya bolshoj stek no etogo mozhno izbezhat v sluchae hvostovoj rekursii Hvostovaya rekursiya mozhet byt raspoznana i optimizirovana kompilyatorom v kod poluchaemyj posle kompilyacii analogichnoj iteracii v imperativnom yazyke programmirovaniya Standarty yazyka Scheme trebuyut raspoznavat i optimizirovat hvostovuyu rekursiyu Optimizirovat hvostovuyu rekursiyu mozhno putyom preobrazovaniya programmy v stile ispolzovaniya prodolzhenij pri eyo kompilyacii kak odin iz sposobov Rekursivnye funkcii mozhno obobshit s pomoshyu funkcij vysshih poryadkov ispolzuya naprimer i ili svyortka i razvyortka Funkcii takogo roda igrayut rol takogo ponyatiya kak cikl v imperativnyh yazykah programmirovaniya Podhod k vychisleniyu argumentov Funkcionalnye yazyki mozhno klassificirovat po tomu kak obrabatyvayutsya argumenty funkcii v processe eyo vychisleniya Tehnicheski razlichie zaklyuchaetsya v vyrazheniya K primeru pri strogom podhode k vychisleniyu vyrazheniya print len 2 1 3 2 1 0 5 4 na vyhode budet oshibka tak kak v tretem elemente spiska prisutstvuet delenie na nol Pri nestrogom podhode znacheniem vyrazheniya budet 4 poskolku dlya vychisleniya dliny spiska znacheniya ego elementov strogo govorya ne vazhny i mogut voobshe ne vychislyatsya Pri strogom applikativnom poryadke vychisleniya zaranee podschityvayutsya znacheniya vseh argumentov pered vychisleniem samoj funkcii Pri nestrogom podhode normalnyj poryadok vychisleniya znacheniya argumentov ne vychislyayutsya do teh por poka ih znachenie ne ponadobitsya pri vychislenii funkcii Kak pravilo nestrogij podhod realizuetsya v vide redukcii grafa Nestrogoe vychislenie ispolzuetsya po umolchaniyu v neskolkih chisto funkcionalnyh yazykah v tom chisle Miranda i Haskell V nefunkcionalnyh yazykah Principialno net prepyatstvij dlya napisaniya programm v funkcionalnom stile na yazykah kotorye tradicionno ne schitayutsya funkcionalnymi tochno tak zhe kak programmy v obektno orientirovannom stile mozhno pisat na strukturnyh yazykah Nekotorye imperativnye yazyki podderzhivayut tipichnye dlya funkcionalnyh yazykov konstrukcii takie kak funkcii vysshego poryadka i spiskovye vklyucheniya list comprehensions chto oblegchaet ispolzovanie funkcionalnogo stilya v etih yazykah v chastnosti takoj podhod shiroko primenyaetsya v praktike yazyka Python Drugim primerom yavlyaetsya yazyk Ruby kotoryj imeet vozmozhnost sozdaniya kak anonimnyh funkcij s ispolzovaniem svyazannyh peremennyh l obektov tak i vozmozhnost organizacii anonimnyh funkcij vysshego poryadka cherez blok s pomoshyu konstrukcii yield V yazyke Si ukazateli na funkciyu v kachestve tipov argumentov mogut byt ispolzovany dlya sozdaniya funkcij vysshego poryadka Funkcii vysshego poryadka i otlozhennaya spiskovaya struktura realizovany v bibliotekah C V yazykah Java versii 8 i vyshe i v C versii 3 0 i vyshe mozhno ispolzovat l funkcii dlya napisaniya programmy v funkcionalnom stile Stili programmirovaniyaImperativnye programmy imeyut sklonnost akcentirovat posledovatelnosti shagov dlya vypolneniya kakogo to dejstviya a funkcionalnye programmy k raspolozheniyu i kompozicii funkcij chasto ne oboznachaya tochnoj posledovatelnosti shagov Prostoj primer dvuh reshenij odnoj zadachi ispolzuetsya odin i tot zhe yazyk Python illyustriruet eto imperativnyj stil target sozdat pustoj spisok for item in source list dlya kazhdogo elementa ishodnogo spiska trans1 G item primenit funkciyu G trans2 F trans1 primenit funkciyu F target append trans2 dobavit preobrazovannyj element v spisok Funkcionalnaya versiya vyglyadit po drugomu funkcionalnyj stil yazyki FP chasto imeyut vstroennuyu funkciyu compose compose2 lambda A B lambda x A B x target map compose2 F G source list V otlichie ot imperativnogo stilya opisyvayushego shagi vedushie k dostizheniyu celi funkcionalnyj stil opisyvaet matematicheskie otnosheniya mezhdu dannymi i celyu Bolee tochno sushestvuet chetyre stupeni razvitiya funkcionalnogo stilya v poryadke ubyvaniya roli dannyh v programmah istochnik ne ukazan 378 dnej Refal dlya etoj kategorii predstavlennoj edinstvennym yazykom istochnik ne ukazan 378 dnej net obsheprinyatogo nazvaniya Applikativnye Lisp ML Tcl Rebol Kombinatornye APL J K angl angl Bestochechnye chistye konkatenativnye Joy Cat Factor podmnozhestvo PostScript V pervom sluchae vsya struktura programmy opredelyaetsya strukturoj dannyh v poslednem dannye kak takovye voobshe otsutstvuyut v ishodnom kode oni lish podrazumevayutsya na vhode Nekotorye yazyki podderzhivayut ryad stilej naprimer Haskell pozvolyaet pisat i v applikativnom i v kombinatornom i v bestochechnom stilyah OsobennostiOsnovnoj osobennostyu funkcionalnogo programmirovaniya opredelyayushej kak preimushestva tak i nedostatki dannoj paradigmy yavlyaetsya to chto v nej realizuetsya model vychislenij bez sostoyanij Esli imperativnaya programma na lyubom etape ispolneniya imeet sostoyanie to est sovokupnost znachenij vseh peremennyh i proizvodit pobochnye effekty to chisto funkcionalnaya programma ni celikom ni chastyami sostoyaniya ne imeet i pobochnyh effektov ne proizvodit To chto v imperativnyh yazykah delaetsya putyom prisvaivaniya znachenij peremennym v funkcionalnyh dostigaetsya putyom peredachi vyrazhenij v parametry funkcij Neposredstvennym sledstviem stanovitsya to chto chisto funkcionalnaya programma ne mozhet izmenyat uzhe imeyushiesya u neyo dannye a mozhet lish porozhdat novye putyom kopirovaniya ili rasshireniya staryh Sledstviem togo zhe yavlyaetsya otkaz ot ciklov v polzu rekursii Silnye storony Povyshenie nadyozhnosti koda Privlekatelnaya storona vychislenij bez sostoyanij povyshenie nadyozhnosti koda za schyot chyotkoj strukturizacii i otsutstviya neobhodimosti otslezhivaniya pobochnyh effektov Lyubaya funkciya rabotaet tolko s lokalnymi dannymi i rabotaet s nimi vsegda odinakovo nezavisimo ot togo gde kak i pri kakih obstoyatelstvah ona vyzyvaetsya Nevozmozhnost mutacii dannyh pri polzovanii imi v raznyh mestah programmy isklyuchaet poyavlenie trudnoobnaruzhivaemyh oshibok takih naprimer kak sluchajnoe prisvaivanie nevernogo znacheniya globalnoj peremennoj v imperativnoj programme Udobstvo organizacii modulnogo testirovaniya Poskolku funkciya v funkcionalnom programmirovanii ne mozhet porozhdat pobochnye effekty menyat obekty nelzya kak vnutri oblasti vidimosti tak i snaruzhi v otlichie ot imperativnyh programm gde odna funkciya mozhet ustanovit kakuyu nibud vneshnyuyu peremennuyu schityvaemuyu vtoroj funkciej Edinstvennym effektom ot vychisleniya funkcii yavlyaetsya vozvrashaemyj ej rezultat i edinstvennyj faktor okazyvayushij vliyanie na rezultat eto znacheniya argumentov Takim obrazom imeetsya vozmozhnost protestirovat kazhduyu funkciyu v programme prosto vychisliv eyo ot razlichnyh naborov znachenij argumentov Pri etom mozhno ne bespokoitsya ni o vyzove funkcij v pravilnom poryadke ni o pravilnom formirovanii vneshnego sostoyaniya Esli lyubaya funkciya v programme prohodit modulnye testy to mozhno byt uverennym v kachestve vsej programmy V imperativnyh programmah proverka vozvrashaemogo znacheniya funkcii nedostatochna funkciya mozhet modificirovat vneshnee sostoyanie kotoroe tozhe nuzhno proveryat chego ne nuzhno delat v funkcionalnyh programmah Vozmozhnosti optimizacii pri kompilyacii Tradicionno upominaemoj polozhitelnoj osobennostyu funkcionalnogo programmirovaniya yavlyaetsya to chto ono pozvolyaet opisyvat programmu v tak nazyvaemom deklarativnom vide kogda zhestkaya posledovatelnost vypolneniya mnogih operacij neobhodimyh dlya vychisleniya rezultata v yavnom vide ne zadayotsya a formiruetsya avtomaticheski v processe vychisleniya funkcij Eto obstoyatelstvo a takzhe otsutstvie sostoyanij dayot vozmozhnost primenyat k funkcionalnym programmam dostatochno slozhnye metody avtomaticheskoj optimizacii Vozmozhnosti parallelizma Eshyo odnim preimushestvom funkcionalnyh programm yavlyaetsya to chto oni predostavlyayut shirochajshie vozmozhnosti dlya avtomaticheskogo rasparallelivaniya vychislenij Poskolku otsutstvie pobochnyh effektov garantirovano v lyubom vyzove funkcii vsegda dopustimo parallelnoe vychislenie dvuh razlichnyh parametrov poryadok ih vychisleniya ne mozhet okazat vliyaniya na rezultat vyzova Nedostatki Nedostatki funkcionalnogo programmirovaniya vytekayut iz teh zhe samyh ego osobennostej Otsutstvie prisvaivanij i zamena ih na porozhdenie novyh dannyh privodyat k neobhodimosti postoyannogo vydeleniya i avtomaticheskogo osvobozhdeniya pamyati poetomu v sisteme ispolneniya funkcionalnoj programmy obyazatelnym istochnik ne ukazan 1239 dnej komponentom stanovitsya vysokoeffektivnyj sborshik musora Nestrogaya model vychislenij privodit k nepredskazuemomu poryadku vyzova funkcij chto sozdayot problemy pri vvode vyvode gde poryadok vypolneniya operacij vazhen Krome togo ochevidno funkcii vvoda v svoyom estestvennom vide naprimer getchar iz standartnoj biblioteki yazyka Si ne yavlyayutsya chistymi poskolku sposobny vozvrashat razlichnye znacheniya dlya odnih i teh zhe argumentov i dlya ustraneniya etogo trebuyutsya opredelyonnye uhishreniya Dlya preodoleniya nedostatkov funkcionalnyh programm uzhe pervye yazyki funkcionalnogo programmirovaniya vklyuchali ne tolko chisto funkcionalnye sredstva no i mehanizmy imperativnogo programmirovaniya prisvaivanie cikl neyavnyj PROGN byli uzhe v Lispe Ispolzovanie takih sredstv pozvolyaet reshit nekotorye prakticheskie problemy no oznachaet othod ot idej i preimushestv funkcionalnogo programmirovaniya i napisanie imperativnyh programm na funkcionalnyh yazykah V chistyh funkcionalnyh yazykah eti problemy reshayutsya drugimi sredstvami naprimer v yazyke Haskell vvod vyvod realizovan pri pomoshi monad koncepcii pozaimstvovannoj iz teorii kategorij PrimechaniyaA Fild P Harrison Funkcionalnoe programmirovanie Per s angl M Mir 1993 637 s il ISBN 5 03 001870 0 Str 120 Glava 6 Matematicheskie osnovy l ischislenie Tiobe Programming Community Index neopr Data obrasheniya 24 sentyabrya 2011 2 iyulya 2013 goda angl Conception evolution and application of functional programming languages angl Association for Computing Machinery Computing Surveys journal 1989 September vol 21 no 3 P 359 411 doi 10 1145 72551 72554 5 iyunya 2013 goda Rodzher Penrouz Glava 2 Lyambda ischislenie Chercha Novyj um korolya O kompyuterah myshlenii i zakonah fiziki The Emperors New Mind Concerning Computers Minds and The Laws of Physics Editorial URSS 2003 ISBN 5 354 00005 X pereizdanie ISBN 978 5 382 01266 7 2011 g angl History of Lisp In Association for Computing Machinery SIGPLAN History of Programming Languages Conference 1978 Iyun S 217 223 doi 10 1145 800025 808387 7 iyunya 2008 goda J Harrison 1997 Gl 3 l ischislenie kak yazyk programmirovaniya V svoih memuarah Gerbert Sajmon 1991 Models of My Life pp 189 190 ISBN 0 465 04640 1 utverzhdaet chto ego Al Nyuell i Kliff Shou kotoryh chasto nazyvayut roditelyami iskusstvennogo intellekta za napisanie programmy angl avtomaticheski dokazyvayushej teoremy iz Principia Mathematica Dlya togo chtoby dostich etogo oni dolzhny byli pridumat yazyk i paradigmu kotoruyu retrospektivno mozhno rassmatrivat kak funkcionalnoe programmirovanie neopr Data obrasheniya 15 aprelya 2012 Arhivirovano iz originala 1 noyabrya 2006 goda XIV APL Session History of Programming Language Richard L Wexelbblat Academic Press 1981 S 661 693 749 s ISBN 0 12 745040 8 Evgenij Kirpichyov Elementy funkcionalnyh yazykov Praktika funkcionalnogo programmirovaniya 2009 Dekabr vyp 3 ISSN 2075 8456 3 sentyabrya 2017 goda Skachat PDF Tehniki funkcionalnogo programmirovaniya V A Potapenko str 8 Funkcii vysshih poryadkov neopr Data obrasheniya 10 yanvarya 2009 30 iyunya 2009 goda GCC Declaring Attributes of Functions neopr Data obrasheniya 28 avgusta 2012 18 avgusta 2012 goda XL Fortran for AIX V13 1 gt Language Reference Pure procedures Fortran 95 Tail call optimization neopr Data obrasheniya 31 iyulya 2012 1 avgusta 2012 goda Revised5 Report on the Algorithmic Language Scheme 3 5 Proper tail recursion neopr Data obrasheniya 31 iyulya 2012 5 yanvarya 2007 goda Fokkinga Maarten Paterson Ross 1991 Functional Programming with Bananas Lenses Envelopes and Barbed Wire PDF Conference on Functional Programming Languages and Computer Architecture FPCA Springer pp 124 144 CiteSeerX 10 1 1 41 125 ISBN 3 540 54396 1 PDF 9 iyulya 2017 Data obrasheniya 3 marta 2020 Bird Richard Pearls of Functional Algorithm Design angl Cambrigde University Press 2010 277 p ISBN 978 0 521 51338 8 8 marta 2022 goda N A Roganova Funkcionalnoe programmirovanie Uchebnoe posobie dlya studentov vysshih uchebnyh zavedenij M GINFO 2002 260 s Str 14 p 3 1 Lenivye i energichnye vychisleniya Lazy Evaluation an overview ScienceDirect Topics neopr www sciencedirect com Data obrasheniya 23 marta 2021 Ahmechet V Funkcionalnoe programmirovanie dlya vseh neopr Data obrasheniya 11 yanvarya 2009 2 fevralya 2009 goda LiteraturaGorodnyaya L V Osnovy funkcionalnogo programmirovaniya Kurs lekcij M Internet universitet informacionnyh tehnologij 2004 S 280 ISBN 5 9556 0008 6 Dushkin R V Funkcionalnoe programmirovanie na yazyke Haskell M DMK Press 2006 S 608 ISBN 5 94074 335 8 Fild A Harrison P Funkcionalnoe programmirovanie Functional Programming M Mir 1993 637 s ISBN 5 03 001870 0 N A Roganova Funkcionalnoe programmirovanie Uchebnoe posobie dlya studentov vysshih uchebnyh zavedenij M GINFO 2002 260 s John Harrison Funkcionalnoe programmirovanie Kurs lekcij Functional Programming 1997 A M Mironov Teoriya funkcionalnyh programm SsylkiImeetsya vikiuchebnik po teme Osnovy funkcionalnogo programmirovaniya Zhurnal Praktika funkcionalnogo programmirovaniya vypuskalsya v 2009 2011 gody Dlya uluchsheniya etoj stati zhelatelno Prostavit snoski vnesti bolee tochnye ukazaniya na istochniki Posle ispravleniya problemy isklyuchite eyo iz spiska Udalite shablon esli ustraneny vse nedostatki
Вершина