Підтримка
www.wikidata.uk-ua.nina.az
Vi vid ti piv angl type inference v programuvanni mozhlivist kompilyatora samomu logichno vivesti tip znachennya u virazu Vpershe mehanizm vivedennya tipiv buv predstavlenij v movi ML de kompilyator zavzhdi vivodit najzagalnishij polimorfnij tip dlya bud yakogo virazu Ce ne tilki skorochuye rozmir pochatkovogo kodu i pidvishuye jogo lakonichnist ale i chasto pidvishuye povtorne vikoristannya kodu Vivid tipiv ye harakternim dlya funkcionalnih mov programuvannya hocha z chasom cya mozhlivist chastkovo z yavilasya i v ob yektno oriyentovanih movah programuvannya C D Visual Basic NET C 11 Vala Go de vona obmezhuyetsya mozhlivistyu opustiti tip identifikatora u viznachenni z inicializaciyeyu div sintaksichnij cukor Napriklad var s Hello world Tip zminnoyi s string vivedenij z inicializatoraAlgoritmiAlgoritm Gindli Milnera Algoritm Gindli Milnera mehanizm vivodu tipiv viraziv yakij realizuyetsya v movah programuvannya yaki bazuyutsya na en takih yak ML persha mova cogo simejstva Standard ML OCaml Haskell F ta Boo Mova Nemerle vikoristovuye cej algoritm z ryadom neobhidnih zmin Mehanizm vivedennya tipiv bazuyetsya na mozhlivosti avtomatichno povnistyu abo chastkovo vivoditi tip virazu otrimanogo za dopomogoyu obchislennya deyakogo virazu Oskilki cej proces sistematichno provoditsya pid chas translyaciyi programi translyator chasto mozhe vivesti tip zminnoyi abo funkciyi bez yavnogo vkazuvannya tipiv cih ob yektiv V bagatoh vipadkah mozhna opuskati yavni deklaraciyi tipiv ce mozhna robiti dlya dostatno prostih ob yektiv abo dlya mov z prostim sintaksisom Napriklad v movi Haskell realizovanij dostatno potuzhnij mehanizm vivedennya tipiv tomu yavnogo vkazuvannya tipiv funkcij v cij movi programuvannya ne potribno Programist mozhe vkazati tip funkciyi yavno dlya togo shob obmezhiti yiyi vikoristannya tilki dlya konkretnih tipiv danih abo dlya bilsh strukturovanogo oformlennya pochatkovogo kodu Dlya togo shob otrimati informaciyu dlya korektnogo vivedennya tipu virazu v umovah vidsutnosti yavnoyi deklaraciyi tipu cogo virazu translyator abo zbiraye taku informaciyu z yavnih deklaracij tipiv pidviraziv zminnih funkcij yaki vhodyat do virazu sho vivchayetsya abo vikoristovuye neyavnu informaciyu pro tipi atomarnih znachen Takij algoritm ne zavzhdi dopomagaye viznachiti tip virazu osoblivo u vipadku vikoristannya funkcij vishih poryadkiv i dostatno skladnoyi prirodi Tomu v skladnih vipadkah koli vinikaye neobhidnist uniknuti neodnoznachnostej rekomenduyetsya yavno vkazuvati tip viraziv Sama model tipizaciyi bazuyetsya na algoritmi vivedennya tipiv viraziv yakij maye yak dzherelo mehanizm otrimannya tipiv viraziv sho vikoristovuyetsya v tipizovanomu l chislenni yakij buv zaproponovanij v 1958 roci G Karri i R Fejsom Dali vzhe en v 1969 roci rozshiriv sam algoritm i doviv sho vin vivodit najzagalnishij tip virazu V 1978 roci Robin Milner nezalezhno vid R Gindli doviv vlastivosti ekvivalentnogo algoritmu I nareshti v 1985 roci ostatochno pokazav sho algoritm Milnera ye zavershenim i mozhe vikoristovuvatis dlya polimorfnih tipiv U zv yazku z cim algoritm Gindli Milnera inkoli nazivayut takozh i algoritmom Damasa Milnera Sistema tipiv viznachayetsya v modeli Gindli Milnera nastupnim chinom Primitivni tipi v displaystyle v ye tipami viraziv Parametrichni zminni tipiv a ye tipami viraziv Yaksho s 1 displaystyle sigma 1 i s 2 displaystyle sigma 2 tipi viraziv to tip s 1 s 2 displaystyle sigma 1 rightarrow sigma 2 ye tipom viraziv Simvol displaystyle bot ye tipom viraziv Virazi tipi yakih obchislyuyutsya viznachayutsya dosit standartnim chinom Konstanti ye virazami Zminni ye virazami Yaksho e 1 displaystyle e 1 i e 2 displaystyle e 2 virazi to e 1 e 2 displaystyle e 1 e 2 viraz Yaksho v displaystyle v zminna a e displaystyle e viraz to l v e displaystyle lambda v e viraz Kazhut sho tip s 1 displaystyle sigma 1 ye ekzemplyarom tipu s 2 displaystyle sigma 2 koli isnuye deyake peretvorennya r displaystyle rho take sho s 1 r s 2 displaystyle sigma 1 rho sigma 2 Pri comu zazvichaj vvazhayetsya sho na peretvorennya tipiv r displaystyle rho nakladayutsya obmezhennya yaki polyagayut v tomu sho r s 1 s 2 r s 1 r s 2 displaystyle rho sigma 1 rightarrow sigma 2 rho sigma 1 rightarrow rho sigma 2 r v v displaystyle rho v v Sam algoritm vivedennya tipiv skladayetsya z dvoh krokiv generuvannya sistemi rivnyan i nastupne rozv yazuvannya cih rivnyan Pobudova sistemi rivnyan Pobudova sistemi rivnyan bazuyetsya na nastupnih pravilah f G v t displaystyle f Gamma v tau v tomu vipadku yaksho zv yazuvannya v t displaystyle v tau znahoditsya v G displaystyle Gamma f G e f t displaystyle f Gamma ef tau v tomu vipadku yaksho t 1 t 2 t displaystyle tau 1 tau 2 rightarrow tau de t 1 f G e displaystyle tau 1 f Gamma e i t 2 f G f displaystyle tau 2 f Gamma f f G l v e t t e displaystyle f Gamma lambda v e tau rightarrow tau e v tomu vipadku yaksho t e f G e displaystyle tau e f Gamma e i G displaystyle Gamma ye rozshirennyam G displaystyle Gamma zv yazuvannyam v t displaystyle v tau V cih pravilah pid simvolom G displaystyle Gamma rozumiyetsya nabir zv yazuvan zminnih z yih tipami seredovishe tipizaciyi G v 1 A 1 v 2 A 2 v n A n displaystyle Gamma v 1 A 1 v 2 A 2 ldots v n A n Rozv yazuvannya sistemi rivnyan Rozv yazuvannya pobudovanoyi sistemi rivnyan bazuyetsya na Ce dostatno prostij algoritm Ye deyaka funkciya u displaystyle u yaka prijmaye na vhid rivnyannya tipiv i povertaye deyaku pidstanovku Pidstanovka ce prosto proyekciya zminnih tipiv na sami tipi Taki pidstanovki mozhut obchislyuvatis riznimi sposobami yaki zalezhat vid konkretnoyi realizaciyi algoritmu Gindli Milnera Div takozhKachina tipizaciya Privedennya tipivPrimitkiAndrew W Appel A Critique of Standard ML Princeton University revised version of CS TR 364 92 1992 angl Michal Moskal Type Inference with Deferral Institute of Computer Science University of Wroclaw 2005 z dzherela 4 bereznya 2016 Procitovano 29 lipnya 2015 angl Posilannyana Perl angl Archived e mail message 6 lyutogo 2021 u Wayback Machine by Roger Hindley explains history of type inference angl Polymorphic Type Inference 10 kvitnya 2011 u Wayback Machine by Michael Schwartzbach gives an overview of Polymorphic type inference angl Principal type schemes for functional programs A re typeset copy of the Damas and Milner paper which described the soundness and completeness proofs angl The tutorial includes some of the logical history of type systems as well as a detailed description of the algorithm as implemented Some typographic errors in the original Damas Milner paper are corrected angl Basic Typechecking 11 serpnya 2015 u Wayback Machine paper by Luca Cardelli describes algorithm includes implementation in angl Implementation 15 lyutogo 2015 u Wayback Machine of Hindley Milner type inference in Scala by Andrew Forrest retrieved July 30 2009 angl Implementation of Hindley Milner in Perl 5 by Nikita Borisov na sajti Wayback Machine arhivovano lyutij 18 2007 angl What is Hindley Milner and why is it cool 10 serpnya 2015 u Wayback Machine Explains Hindley Milner examples in Scala angl http fprog ru 2010 issue5 roman dushkin hindley milner 30 grudnya 2014 u Wayback Machine Model tipizaciyi Gindli Milnera i priklad yiyi realizaciyi na movi Haskell ros
Топ