www.wikidata.uk-ua.nina.az
F bagatoparadigmova mova programuvannya rozroblena v pidrozdili Microsoft Research i priznachena dlya vikonannya na platformi Microsoft NET Vona poyednuye v sobi viraznist funkcijnih mov takih yak OCaml i Haskell z mozhlivostyami i ob yektnoyu modellyu NET F Paradigma Paradigma programuvannya Funkcijne programuvannya Imperativne programuvannya Ob yektno oriyentovane programuvannya MetaprogramuvannyaData poyavi 2005Tvorci Microsoft Research Don SymeRozrobnik Microsoft i F Sharp Software FoundationdOstannij relizSistema tipizaciyi statichna stroga tipizaciya i vivid tipivPid vplivom vid ML OCaml C Python Haskell Scala ErlangOperacijna sistema kros platformova programaLicenziya Apache LicenseZvichajni rozshirennya fajliv fs fsi fsx abo fsscriptRepozitorij vihidnogo kodu github com dotnet fsharp Vebsajt The F Software Foundation F Sharp u Vikishovishi Zmist 1 Korotkij oglyad F 2 Istoriya 3 Osnovni mozhlivosti movi 3 1 F funkcionalna 3 2 F imperativna 3 3 F ob yektno oriyentovana 4 Rozshireni mozhlivosti 4 1 Obchislyuvalni virazi 4 2 Asinhronni potoki operacij async workflows 4 3 MailboxProcessor 4 4 Obrobka podij 5 Prikladi vikoristannya 6 Visnovok 7 Primitki 8 LiteraturaKorotkij oglyad F RedaguvatiFunkcijna mova maksimalno adaptovana do vikoristannya v NET Framework vidpovidno vona ne zaperechuye i imperativnogo pidhodu Protyagom trivalogo chasu F isnuvav yak doslidnickij proekt osnovnim zavdannyam yakogo bulo zbagatiti imperativnu movu C mozhlivostyami tradicijno dostupnimi lishe funkcionalnim movam Bezlichchyu novovveden C 3 0 z VS 2008 zavdyachuye same jomu Sam po sobi F ne stvorenij z chistogo arkusha v Microsoft v jogo osnovu pokladeno dosit populyarnij OCaml yakij u svoyu chergu pohodit vid odnoyi z pershih tipizovanih funkcionalnih mov ML Popri te sho sintaksichno F i OCaml dosit blizki voni ne ekvivalentni grubo kazhuchi pershij stanovit soboyu pidmnozhinu drugogo dopovnenu dostupom do vlastivostej NET Framework Odnak deyaki programi na OCaml mozhut buti praktichno bez modifikacij skompilovani F zvorotna kompilyaciya takozh spravedliva zrozumilo za vidsutnosti zvernen do klasiv NET Framework Istoriya RedaguvatiIstoriya F pochalasya v 2002 roci koli komanda rozrobnikiv z Microsoft Research pid kerivnictvom Don Syme virishila sho movi simejstva ML cilkom pidhodyat dlya realizaciyi funkcionalnoyi paradigmi na platformi NET Ideya rozrobki novoyi movi z yavilasya pid chas roboti nad Generic ami realizaciyeyu uzagalnenogo programuvannya dlya Common Language Runtime Vidomo sho u svij chas yak prototip novoyi movi rozglyadalasya Haskell ale cherez funkcionalnu chistotu i skladnishu sistemu tipiv potencijnij Haskell NET ne mig bi nadati rozrobnikam prostogo mehanizmu roboti z bibliotekoyu klasiv NET Framework a znachit ne davav bi yakihos dodatkovih perevag Yak bi tam ne bulo za osnovu buv uzyatij OCaml mova z simejstva ML yaka ne ye chisto funkcionalnoyu i nadaye mozhlivosti dlya imperativnogo i ob yektno oriyentovanogo programuvannya Haskell hoch i ne stav bezposeredno batkom novoyi movi tim ne menshe spraviv na nogo deyakij vpliv Napriklad koncepciya obchislyuvalnih viraziv computation expressions abo workflows sho grayut vazhlivu rol dlya asinhronnogo programuvannya ta realizaciyi DSL na F zapozichena z monad Haskell Nastupnim krokom u rozvitku novoyi movi stala poyava v 2005 roci yiyi pershoyi versiyi Z tih pir navkolo F stalo formuvatisya spivtovaristvo Za rahunok pidtrimki funkcionalnoyi paradigmi mova viyavilasya potribnoyu v naukovij sferi ta finansovih organizaciyah Bagato v chomu zavdyaki comu Microsoft virishila perevesti F zi statusu doslidnickih proektiv u status pidtrimuvanih produktiv i postaviti yiyi v odin ryad z osnovnimi movami platformi NET I ce popri te sho ostannim chasom vse bilshu aktivnist proyavlyayut dinamichni movi pidtrimka yakih takozh prisutnya v NET Framework 12 kvitnya 2010 svit pobachila nova versiya flagmanskogo produktu dlya rozrobnikiv Microsoft Visual Studio 2010 yaka pidtrimuye rozrobku na F pryamo z korobki Osnovni mozhlivosti movi RedaguvatiF ye multiparadigmennoyu movoyu a ce oznachaye sho na nij mozhna realizovuvati funkciyi vishih poryadkiv useredini yakih vikonuvati imperativnij kod i obgortati vse ce v klasi dlya vikoristannya kliyentami napisanimi inshimi movami na platformi NET F funkcionalna Redaguvati F buduchi spadkoyemcem tradicij simejstva mov ML nadaye povnij nabir instrumentiv funkcionalnogo programuvannya tut ye algebrayichni tipi danih i funkciyi vishogo poryadku mozhlivist kompoziciyi funkcij i nezminni strukturi danih a takozh chastkove zastosuvannya na paru z karruvannyam Zi sliv ekspertiv v OCaml v F ne vistachaye funktoriv Usi funkcionalni mozhlivosti F realizovani v kincevomu pidsumku poverh zagalnoyi sistemi tipiv NET Framework Odnak cej fakt ne zabezpechuye zruchnosti vikoristannya takih konstrukcij z inshih mov platformi Pri rozrobci vlasnih bibliotek na F slid peredbachiti stvorennya ob yektno oriyentovanih obgortok yaki bude prostishe vikoristovuvati z C abo Visual Basic NET F imperativna Redaguvati U vipadkah koli bagatih funkcionalnih mozhlivostej ne vistachaye F nadaye rozrobnikovi mozhlivist vikoristovuvati v kodi prinadi zminyuvanogo stanu Ce yak bezposeredno zminyuvani zminni pidtrimka poliv i vlastivostej ob yektiv standartnoyi biblioteki tak i yavni cikli a takozh zminni kolekciyi i tipi danih F ob yektno oriyentovana Redaguvati Ob yektno oriyentovani mozhlivosti F yak i bagato chogo inshogo v cij movi obumovleni neobhidnistyu nadati rozrobnikam mozhlivist vikoristovuvati standartnu biblioteku klasiv NET Framework Z postavlenim zavdannyam mova cilkom spravlyayetsya mozhna yak vikoristovuvati biblioteki klasiv realizovani na inshih NET movah tak i rozroblyati svoyi vlasni Slid zaznachiti odnak sho deyaki mozhlivosti GO mov realizovani ne samim zvichnim chinom Take zmishannya paradigm z odnogo boku mozhe privesti do plachevnih rezultativ a z inshogo nadaye bilshe gnuchkosti i dozvolyaye pisati prostishij kod Tak napriklad vseredini standartnoyi biblioteki F deyaki funkciyi napisani v imperativnomu stili z metoyu optimizaciyi shvidkosti vikonannya Tomash Petrichek u svoyemu blozi zgaduye takozh pro movno oriyentovane programuvannya F vidminno pidhodit yak dlya napisannya vbudovanih DSL tobto imitaciyi movi predmetnoyi oblasti zasobami osnovnogo movi tak i dlya peretvorennya F kodu v konstrukciyi vikonuvani inshimi zasobami napriklad v SQL virazi abo v poslidovnosti instrukcij GPU Krim togo v komplekt postachannya F vhodyat utiliti FsYacc i FsLex yaki ye analogami takih zhe utilit dlya OCaml i yaki dozvolyayut generuvati sintaksichni ta leksichni analizatori a znachit na F cilkom mozhna rozrobiti svij vlasnij mova programuvannya Rozshireni mozhlivosti RedaguvatiObchislyuvalni virazi Redaguvati Sered novovveden F mozhna osoblivo vidiliti tak zvani obchislyuvalni virazu computation expressions abo workflows Voni ye uzagalnennyam generatoriv poslidovnosti i zokrema dozvolyayut vbudovuvati v F taki obchislyuvalni strukturi yak monadi i monoyid Takozh voni mozhut buti zastosovani dlya asinhronnogo programuvannya ta stvorennya DSL Obchislyuvalnij viraz maye formu bloku sho mistit pevnij kod na F u figurnih duzhkah Comu bloku povinen pereduvati specialnij ob yekt yakij nazivayetsya she postroitelem builder Zagalna forma nastupna builder comp expr Budivnik viznachaye sposib interpretaciyi togo kodu yakij vkazanij u figurnih duzhkah Sam kod obchislennya zovni majzhe ne vidriznyayetsya vid zvichajnogo kodu na F krim togo sho v nomu ne mozhna viznachati novi tipi a takozh ne mozhna vikoristovuvati zminni znachennya Zamist takih znachen mozhna vikoristovuvati posilannya ale robiti ce slid z velikoyu oberezhnistyu oskilki obchislyuvalni virazhennya zazvichaj stavlyat yakis vidkladeni obchislennya a ostanni ne duzhe lyublyat pobichni efekti U zalezhnosti vid budivnika vseredini obchislyuvalnogo kodu mozhna takozh vikoristovuvati osoblivi konstrukciyi let Use Return return Yield i yield Yaksho chitach znajomij z movoyu programuvannya Haskell to mozhna pomititi sho let vidpovidaye strilkoyu z notaciyi do a return maye toj zhe zmist sho i v Haskell Za svoyeyu suttyu obchislyuvalne viraz ye sintaksichnim cukrom navkolo zaznachenogo budivnika Kompilyator F prohoditsya za kodom obchislennya i zaminyuye movni konstrukciyi viklikami vidpovidnih metodiv budivnika b zgidno z nastupnoyu tabliceyu de lapki poznachayut operator peretvorennya Konstrukciya Forma peretvorennya let pat expr in cexpr b Bind expr fun pat cexpr let pat expr in cexpr let pat expr in cexpr use pat expr in cexpr b Using expr fun pat cexpr use pat expr in cexpr b Bind expr fun x b Using x fun pat cexpr do expr in cexpr b Bind expr fun cexpr do expr in cexpr expr cexpr for pat in expr do cexpr b For expr fun pat cexpr while expr do cexpr b While fun expr b Delay fun cexpr if expr then cexpr1 else cexpr2 if expr then cexpr1 else cexpr2 if expr then cexpr if expr then cexpr else b Zero match expr with pat cexpr match expr with pat cexpr cexpr1 v Combine cexpr1 cexpr2 b Delay fun cexpr2 return expr b Return expr return expr b ReturnFrom expr yield expr b Yield expr yield expr b YieldFrom expr Takozh ye peretvorennya dlya konstrukciyi try ale vono bilsh dovge Takim chinom vsi osnovni konstrukciyi F viyavlyayutsya ohopleni Osnovna ideya polyagaye v tomu sho koli kompilyator obroblyaye chergovu konstrukciyu obchislyuvalnogo virazhennya to vin namagayetsya viklikati vidpovidnij metod budivnika Budivnik ne zobov yazanij realizovuvati vsi vkazani metodi Yaksho potribnogo metodu nemaye to bude zgenerovana pomilka chasu kompilyaciyi Asinhronni potoki operacij async workflows Redaguvati Asinhronni potoki operacij ce odin z najcikavishih prikladiv praktichnogo vikoristannya obchislyuvalnih viraziv Kod sho vikonuye bud yaki neblokuyuchim operaciyi vvedennya vivedennya yak pravilo skladnij dlya rozuminnya oskilki predstavlyaye z sebe bezlich callback metodiv kozhen z yakih obroblyaye yakijs promizhnij rezultat i mozhlivo pochinaye novu asinhronnu operaciyu Asinhronni potoki operacij dozvolyayut pisati asinhronnij kod poslidovno ne viznachayuchi callback metodi yavno Dlya stvorennya asinhronnogo potoku operacij vikoristovuyetsya blok async open System IO open System Net open Microsoft FSharp Control WebExtensions let getPage url string async let req WebRequest Create url let res req AsyncGetResponse use stream res GetResponseStream use reader new StreamReader stream let result reader AsyncReadToEnd return result Tut mi ogolosili funkciyu getPage yaka povinna povertati vmist storinki za zadanoyu adresoyu Cya funkciya maye tip string gt Async lt string gt i povertaye asinhronnu operaciyu yaka mozhe buti vikoristana dlya otrimannya ryadka z vmistom storinki Varto vidznachiti sho klasi WebRequest i StreamReader ne mayut metodiv AsyncGetResponse i AsyncReadToEnd ce metodi rozshirennya Budivnik asinhronnogo potoku operacij pracyuye takim chinom Zustrivshi operator let abo do vin pochinaye vikonuvati operaciyu asinhronno pri comu metod pochatkivec asinhronnu operaciyu otrimaye chastinu sho zalishilasya bloku async yak funkciya zvorotnogo vikliku Pislya zavershennya asinhronnoyi operaciyi peredanij callback prodovzhit vikonannya asinhronnogo potoku operacij ale mozhlivo vzhe v inshomu potoci operacijnoyi sistemi dlya vikonannya kodu vikoristovuyetsya pul potokiv U rezultati kod viglyadaye tak yak nibi vin vikonuyetsya poslidovno Te sho mozhe buti z legkistyu zapisano vseredini bloku async z vikoristannyam cikliv i umovnih operatoriv dosit skladno realizuyetsya z vikoristannyam zvichajnoyi tehniki sho vimagaye opisu mnozhini callback metodiv i peredacheyu stanu mizh yih viklikami Obrobka vinyatkiv najbilsh naochnij priklad zruchnosti asinhronnih potokiv operacij Yaksho mi pishemo asinhronnij kod u tradicijnomu stili to kozhen metod zvorotnogo vikliku povinen obroblyati vinyatki samostijno Blok async mozhe vklyuchati operator try za dopomogoyu yakogo mozhna obroblyati vinyatki as e gt printfn error s e Message return None U comu prikladi potik operacij povertaye znachennya tipu string option tobto abo ryadok abo puste znachennya shob viklikaye kod mig obrobiti pomilku Znachennya tipu Async lt gt potribno peredati v odin iz statichnih metodiv klasu Async shob rozpochati vikonannya vidpovidnogo potoku operacij U najprostishomu vipadku mozhna skoristatisya metodom Async RunSynchronously yakij prosto zablokuye viklikaye potik do tih pir poki vsi operaciyi ne budut vikonani MailboxProcessor Redaguvati MailboxProcessor ce klas zi standartnoyi biblioteki F realizuye odin z paterniv paralelnogo programuvannya MailboxProcessor ye agentom23 obroblyayut chergu povidomlen yaki postavlyayutsya jomu zzovni za dopomogoyu metodu Post Vsya konkurentnist pidtrimuyetsya realizaciyeyu klasu yakij mistit chergu z mozhlivistyu odnochasnogo zapisu kilkoma pismennikami i chitannya odnim yedinim chitachem yakim ye sam agent let agent MailboxProcessor Start fun inbox gt async while true do let msg inbox Receive printfn message received s msg Vishe navedena realizaciya najprostishogo agenta yakij pri otrimanni povidomlennya sho mistit ryadok vivodit jogo na ekran Poslati agentu povidomlennya yak vzhe bulo skazano vishe mozhna za dopomogoyu metodu Post agent Post Hello world Cikavo vidznachiti tip funkciyi sho ye yedinim parametrom konstruktora agenta i statichnogo metodu Start 24 static member Start MailboxProcessor lt Msg gt gt Async lt unit gt gt MailboxProcessor lt Msg gt Z cogo viznachennya vidno sho osnovnoyu robochoyu konyachkoyu agenta ye funkciya na vhid otrimuye primirnik samogo agenta i povertaye asinhronnu operaciyu pro yaki jshlosya trohi vishe Prirodno sho pryame vidpovidnist agentiv i potokov25 bulo b ne duzhe zruchno i vkraj neefektivno tomu sho silno obmezhuvalo b kilkist odnochasno pracyuyuchih agentiv Zavdyaki vikoristannyu asinhronnih potokiv operacij agent bilshu chastinu chasu ye prosto strukturoyu v pam yati yaka mistit deyakij vnutrishnij stan i tilki v ti momenti koli v chergu nadhodit chergove povidomlennya funkciya obrobki reyestruyetsya dlya vikonannya v potoci z sistemnogo pulu Funkciyeyu obrobki yakraz i ye ta sho bula peredana v konstruktor abo metod Start Takim chinom ves vnutrishnij stan agenta pidtrimuyetsya infrastrukturoyu a ne lyagaye tyazhkim vantazhem na plechi koristuvacha Dlya pidtverdzhennya cogo faktu mozhna sprobuvati stvoriti kilka tisyach agentiv zapustiti yih i pochati vipadkovim chinom vidpravlyati yim povidomlennya Obrobka podij Redaguvati Spochatku NET dozvolyaye obroblyati podiyi po odnomu Obrobnikom podiyi ye funkciya yaka viklikayetsya shorazu z deyakimi argumentami i yaksho rozrobniku neobhidno zberigati yakes dodatkove stan mizh viklikami podij ce dovoditsya robiti samostijno Krim togo originalna model pidpiski mozhe prizvoditi do vitoku pam yati cherez nayavnist neyavnih vzayemnih posilan u peredplatnika i generatori podij F zvichajno dozvolyaye pracyuvati z podiyami v klasichnomu rozuminni Pravda robitsya ce za dopomogoyu trohi nezvichajnogo sintaksisu zamist vikoristannya operatoriv i dlya reyestraciyi i deaktivaciyi obrobnika podiyi vikoristovuyetsya para metodiv Add Remove button Click Add fun args gt printfn Button clicked Z inshogo boku F dozvolyaye manipulyuvati potokami podij i pracyuvati z nimi yak z poslidovnostyami vikoristovuyuchi funkciyi filter map split ta inshi Napriklad nastupnij kod filtruye potik podij natiskannya klavish vseredini polya vvedennya vibirayuchi lishe ti z nih yaki buli natisnuti v poyednanni z Ctrl pislya chogo z usih argumentiv podij vibirayutsya tilki znachennya polya KeyCode Takim chinom znachennyam keyCodes bude potik podij yaki mistyat lishe kodi klavish natisnutih z dzvinkom Ctrl gt Event map fun args gt args KeyCode Varto vidznachiti sho obrobka potokiv podij dozvolyaye rozrobniku ne pikluvatisya pro tonkoshi vidpiski a prosto generuvati novi potoki podij na osnovi vzhe isnuyuchih vikoristovuvati ci potoki yak znachennya tobto peredavati yih yak argumenti ta povertati z funkcij Vikoristannya podibnoyi tehniki mozhe prizvesti do znachnogo sproshennya kodu dlya realizaciyi napriklad funkcionalnosti Drag amp Drop Adzhe ce ye ni sho inshe yak kompoziciya podiyi natiskannya knopki mishi peremishennya kursoru z natisnutoyu knopkoyu i potim vidpuskannya Dlya prikladu chastinu sho vidpovidaye za drag mozhna legko pereklasti z rosijskoyi na F gt Event merge form MouseMovePoyednannya obrobki potokiv podij z asinhronnimi potokami operacij dozvolyaye takozh dosit prosto virishuvati sumno vidomu problemu GUI dodatkiv koli obrobnik podiyi grafichnogo komponentu povinen vikonuvatis v osnovnomu potoci i bud yake zvolikannya prizvede do zavisannya interfejsu dodatku Prikladi vikoristannya RedaguvatiIsnuye cikavij priklad vikoristannya quotations v F yak zasobu meta programuvannya Zavdannya pov yazana z masivnoyi paralelnoyu obrobkoyu danih za dopomogoyu specialnoyi biblioteki abo na bagatoyadernij procesornij sistemi x64 abo na grafichnomu procesori GPU Viznachayetsya nevelika pidmnozhina F kod z yakoyi mozhe buti vidtranslyuvanim i zapushenim na cilovij platformi Ce dozvolyaye pisati zvichajni funkciyi na F nalagodzhuvati yih standartnim chinom a potim za dopomogoyu mehanizmu quotations obroblyati ci funkciyi i zapuskati na GPU Bilsh togo programa na F mozhe stvoryuvati na lotu taki funkciyi yaki vzhe potim mozhut vidtranslyuvatisya i zapustitisya na inshij platformi Primitno sho pri realizaciyi takoyi translyaciyi shiroko vikoristovuyetsya specialna mozhlivist F u viglyadi aktivnogo zistavlennya zi zrazkom active pattern matching yaka pomitno sproshuye napisannya translyatora Mova F mozhe buti zruchna dlya stvorennya DSL yaki stayut chastinoyu samogo F prichomu taki movi mozhut buti dosit korotkimi i viraznimi Napriklad u knizi Real World Functional Programming navoditsya biblioteka dlya opisu animaciyi Pervisna ideya bula realizovana v proekti Fran Elliot Hudak 1997 na movi Haskell Opis ideyi she mozhna znajti v knizi The Haskell School of Expression 6 Animaciya modelyuyetsya yak zalezhna vid chasu velichina Na osnovi primitiviv buduyutsya vzhe skladovi leksikon predmetnoyi oblasti funkciyi za dopomogoyu yakih mozhna opisuvati dosit skladni animaciyi i robiti ce deklarativno Sho stosuyetsya realizaciyi to tam bagato spilnogo z monadami Os priklad togo yak viglyadaye na movi F viznachennya animovanoyi chastini sonyachnoyi sistemi yaku potim mozhna vizualizuvati na ekrani komp yutera let solarSystem sun rotate 80 00f 4 1f mercury rotate 150 0f 1 6f venus rotate 215 0f 1 0f earth rotate 20 0f 12 0f moon Nastupnim prikladom vikoristannya F ye komercijnij produkt WebSharper firmi IntelliFactory 2 Ce platforma dlya stvorennya kliyentskih web dodatkiv Vona dozvolyaye pisati kliyentskij kod na F yakij potim bude vidtranslyuvati na JavaScript Taka translyaciya poshiryuyetsya na dostatnyu veliku pidmnozhinu F vklyuchayuchi funkcionalne yadro movi algebrichni tipi danih klasi ob yekti vinyatki j delegati Takozh pidtrimuyetsya znachna chastina standartnoyi biblioteki F vklyuchayuchi robotu z poslidovnostyami sequences podiyami i asinhronnimi obchislyuvalnimi virazami async workflows Vse mozhe buti avtomatichno vidtranslyuvati na cilovu movu JavaScript Krim togo pidtrimuyetsya deyaka chastina standartnih klasiv samogo NET i obsyag pidtrimki bude zrostati Cej produkt primitnij tim sho tut vikoristovuyetsya cilij ryad prijomiv harakternih dlya funkcionalnogo programuvannya Tak v WebSharper vbudovanij DSL dlya zavdannya HTML kodu v yakomu shiroko zastosovuyutsya kombinatori Napriklad nastupnij shmatok kodu na F Div Class Header lt H1 Our Website Br P Hello world Img Src smile jpg bude peretvorenij na vihodi v takij kod HTML lt div class header gt lt h1 gt Our Website lt h1 gt lt br gt lt p gt Hello world lt p gt lt img src smile jpg gt lt div gt Dlya samoyi zh translyaciyi v JavaScript vikoristovuyutsya cituvannya Kod dlya translyaciyi povinen buti pomichenij atributom JavaScriptAttribute uspadkovanim vid standartnogo ReflectedDefinitionAttribute 1 Visnovok RedaguvatiVidpovidno do gipotezi lingvistichnoyi vidnosnosti lyudi sho govoryat na riznih movah mislyat i sprijmayut navkolishnyu dijsnist po riznomu Yaksho pripustiti mova programuvannya yaku vikoristovuye programist vplivaye na te yak vin bachit virishennya problemi to ne mozhna ne viznati sho F bude pidshtovhuvati jogo do poshuku prostishih i elegantnishih rishen Bez sumnivu F znajde shiroke zastosuvannya u finansovij sferi ta v galuzi statistiki Krim cogo F zaslugovuye na te shob stati dosit populyarnim u inshih oblastyah hocha b tomu sho robit bagatopotokove programuvannya prostishim i zrozumilishim Slid takozh zaznachiti sho zaraz F ye mabut yedinoyu funkcionalnoyu movoyu programuvannya yaka prosuvayetsya odnim z providnih virobnikiv u galuzi rozrobki programnogo zabezpechennya Vin dozvolyaye vikoristovuvati bezlich vzhe isnuyuchih bibliotek pisati programi dlya riznih platform i sho ne mensh vazhlivo robiti vse ce v suchasnij IDE Primitki RedaguvatiLiteratura RedaguvatiIntelliFactory s WebSharper Arhivovano 16 grudnya 2010 u Wayback Machine Lekciyi Dzhona Harrisona Introduction to Functional Programming Rosijskij pereklad Arhivovano 30 listopada 2010 u Wayback Machine Spisok proektiv sho vikoristovuyut F z vidkritim kodom http stackoverflow com questions 383848 f open source projects Arhivovano 16 chervnya 2010 u Wayback Machine Jon Harrop F for Scientists Wiley Interscience New York NY USA 2008 Paul Hudak The Haskell School of Expression Learning Functional Programming through Multimedia Cambridge University Press 2000 Petricek Accelerator and F nedostupne posilannya z chervnya 2019 Tomas Petricek F Overview Introduction Blog Tomasha Petricheka Arhivovano 27 grudnya 2010 u Wayback Machine Tomas Petricek and Jon Skeet Real World Functional Programming with examples in F and C Manning Publications 2009 Cya stattya mistit pravopisni leksichni gramatichni stilistichni abo inshi movni pomilki yaki treba vipraviti Vi mozhete dopomogti vdoskonaliti cyu stattyu pogodivshi yiyi iz chinnimi movnimi standartami lipen 2017 nbsp Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Otrimano z https uk wikipedia org w index php title F Sharp amp oldid 39647181