Inferencja typów

Inferencja typów – mechanizm w językach statycznie typowanych, w którym kompilator określa typ danych na podstawie informacji dostępnych w czasie kompilacji, np. typów zadeklarowanych wcześniej lub określania typów na podstawie wartości już znanych zmiennych[1]. Przykładem języka programowania, który wykorzystuje inferencję typów jest TypeScript.

Przykład

Dla przykładu w wyjątkowo niezłożonym języku, kod został już przetworzony w drzewo składniowe z jednoargumentowymi (rozwiniętymi) funkcjami (przykładowy kod w Ocamlu).

Nasz język ma tylko dwie konstrukcje – atomy i aplikacje funkcji. Podobnie typy dzielą się na atomowe i funkcyjne:

type utype = Basic of string | Fun of utype * utype;;

type expr = Atom of utype | Fapp of expr * expr;;

Kompilator musi sprawdzić trzy wyrażenia: (+), (+ 2) i ((+ 2) 2), oblicza więc typy atomów: (int->int->int), ((int->int->int) int), (((int->int->int) int) int) i podaje je do naszego inferatora:

let plus = Atom (Fun (Basic "int", Fun (Basic "int", Basic "int")));;
let two_plus = Fapp (plus, Atom (Basic "int"));;


let two_plus_two = Fapp (two_plus, Atom (Basic "int"));;

Procedura inferencji jest prosta: wylicza się typ ciała funkcji oraz jej argumentu, po czym jeśli:

  • typ funkcja nie jest funkcyjny - oznacza to błąd "not a function"
  • funkcja jest typu funkcyjnego, ale typ jej argumentu nie zgadza się z typem podanego argumentu - oznacza to błąd "argument type mismatch"
  • jeśli funkcja jest typu funkcyjnego i typy argumentów się zgadzają wyrażenie ma wartość taką jaką zwraca funkcja

Przy czym w językach polimorficznych nie sprawdza się równości tylko unifikuje typy argumentu spodziewanego i rzeczywistego.

let rec utype_infere = function
    Atom a -> a
  | Fapp (f,arg) ->
      let f_type = utype_infere f
      in let arg_type = utype_infere arg
      in match (f_type,arg_type) with
          (Basic _,_) -> failwith "not a function"
        | (Fun(fat,rt),aat) ->
            if fat = aat
            then rt
            else failwith "argument type mismatch"
;;

I podanie wyrażeń do inferatora:

utype_infere plus;;
utype_infere two_plus;;
utype_infere two_plus_two;;

W rzeczywistych językach należałoby też zająć się inferencją typów funkcji, krotek, pętli, konstrukcji warunkowych i innych zwykle spotykanych konstrukcji. Większość z nich można przedstawić jako funkcje polimorficzne.

Zobacz też

Przypisy

Bibliografia

Read other articles:

Daftar ini menuliskan para personel militer Amerika Serikat yang menerima Medal of Honor (diterjemahkan secara harafiah sebagai Medali Kehormatan) untuk keberanian dalam pertempuran selama Perang Spanyol–Amerika Serikat. Terdapat 112 orang yang menerima Medali Kehormatan ini. Daftar penerima       Latar abu-abu dan  † menyatakan diberikan secara anumerta. Foto Nama Matra Baker, Benjamin F.Benjamin F. Baker Angkatan Laut Baker, Jr., Edward L.Edward L. Bak...

 

FC Kuban KrasnodarNama lengkapFootball Club Kuban KrasnodarJulukanKazaki, Zholto-zelionye (Yellow-Green)Berdiri1928StadionKuban Stadium,Krasnodar(Kapasitas: 32,000)Ketua Aleksander TkachovManajer Sergei PavlovLigaLiga Utama Rusia2008Division 1 Rusia 2 Kostum kandang Kostum tandang FC Kuban Krasnodar (Rusia: ФК Кубань Краснодарcode: ru is deprecated ) merupakan sebuah tim sepak bola Rusia yang bermain di Liga Utama Rusia. Bermarkas di Krasnodar, Rusia. Didirikan pada tahun 192...

 

Enoch AdeboyeLahirIfewara, Osun State, NigeriaKebangsaanNigeriaNama lainDaddy GO atau Pastor AdeboyePekerjaanPastor dan mantan Profesor Matematika Enoch Adejare Adeboye adalah seorang pastor Nigeria dan General Overseer Redeemed Christian Church of God (RCCG)[1][2] Pastor Adeboye mendapatkan gelar B.Sc.-nya dalam bidang Matematika di Universitas Nigeria Nsukka[3] dan kemudian mendapatkan gelar PhD-nya dalam bidang matematika terapan dari Universitas Lagos, dan be...

Duta Besar Indonesia untuk KenyaMerangkap Republik Demokratik Kongo, Somalia, Uganda, UNEP, dan UN-HABITATLambang Kementerian Luar Negeri Republik IndonesiaPetahanaMohamad Hery Saripudinsejak 14 September 2020KantorNairobi, KenyaDitunjuk olehPresiden IndonesiaPejabat perdanaR. SupangatDibentuk1982[1]Situs webkemlu.go.id/nairobi/id Berikut adalah daftar diplomat Indonesia yang pernah menjabat Duta Besar Republik Indonesia untuk Kenya: No. Foto Nama Mulai menjabat Selesai menjabat ...

 

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Gathering LDS Church – news · newspapers · books · scholar · JSTOR (October 2010) (Learn how and when to remove this template message) Gathering has been an important part of life in the Church of Jesus Christ of Latter-day Saints (LDS Church), from gathering as missionaries to gathering for worship s...

 

Linear AJenis aksara Belum bisa diuraikan (diduga silabis dan ideografis) Bahasa'Minoa' (tidak diketahui)PeriodeMM IB hingga LM IIIA 1800–1450 SM[1]StatusPunahArah penulisanKiri ke kananAksara terkaitAksara turunanLinear B, Cypro-Minoan syllabary[2]Aksara kerabatHieroglif KretaISO 15924ISO 15924Lina, 400 , ​Linear APengkodean UnicodeRentang UnicodeU+10600–U+1077F (PDF).  Final Accepted Script Proposal (PDF).  Artikel ini mengandung Karakter ...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada November 2022. Habemus PapamPoster ItaliaSutradaraNanni MorettiProduserNanni MorettiDomenico ProcacciDitulis olehNanni MorettiFrancesco PiccoloFederica PontremoliPemeranMichel PiccoliNanni MorettiPenata musikFranco PiersantiSinematograferAlessandro PesciPenyun...

 

LugojKotamadyaKatedral Ortodoks Barok Lambang kebesaranLetak LugojNegara RumaniaStatusKotamadyaPemerintahan • Wali kotaFrancisc Boldea (Partai Demokratik)Luas • Total88,05 km2 (3,400 sq mi)Populasi (2004) • Total46.189Zona waktuUTC+2 (EET) • Musim panas (DST)UTC+3 (EEST)Situs webhttp://www.primarialugoj.ro/ Pemandangan dari sebuah jembatan di Lugoj Lugoj (Jerman: Lugoschcode: de is deprecated , bahasa Serbia: Lugoš ...

 

Part of the Apollo Lunar Surface Experiments Package (ALSEP) Suprathermal Ion Detector ExperimentSuprathermal Ion Detector Experiment (right) with Cold Cathode Gauge Experiment (left) on Apollo 15AcronymSIDENotable experimentsApollo 12, 14, and 15ManufacturerBendix Corporation The Suprathermal Ion Detector Experiment (SIDE) was a lunar science experiment, first deployed by astronauts on the lunar surface in 1969 as part of Apollo 12, and later flying on Apollo 14 and Apollo 15.[1] The...

Jaimee Fourlis Jaimee Fourlis nel 2023 Nazionalità  Australia Tennis Carriera Singolare1 Vittorie/sconfitte 197 - 145 (57.6%) Titoli vinti 0 WTA, 8 ITF Miglior ranking 147ª (18 luglio 2022) Ranking attuale ranking Risultati nei tornei del Grande Slam  Australian Open 2T (2017)  Roland Garros 1T (2017)  Wimbledon 1T (2022)  US Open 1T (2022) Doppio1 Vittorie/sconfitte 78 - 59 (56.93%) Titoli vinti 0 WTA, 6 ITF Miglior ranking 138ª (2 marzo 2020) Ranking attuale ran...

 

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目的引用需要清理,使其符合格式。参考文献应符合正确的引用、脚注及外部链接格式。 此條目可参照英語維基百科相應條目来扩充,此條目在對應語言版為高品質條目。 (2023年8月17日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低�...

 

Genus of mammals HippopotamusTemporal range: Pliocene - Recent[1][2] The river hippopotamus, Hippopotamus amphibius Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Mammalia Order: Artiodactyla Family: Hippopotamidae Subfamily: Hippopotaminae Genus: HippopotamusLinnaeus, 1758 Type species Hippopotamus amphibiusLinnaeus, 1758 Synonyms Phanourios Sondaar and Boekschoten, 1972 Hippopotamus is a genus of artiodactyl mammals consisting of one ex...

American television series This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Falcon Crest – news · newspapers · books · scholar · JSTOR (March 2023) (Learn how and when to remove this message) Falcon CrestMain title card (season 9)GenreSoap operaCreated byEarl Hamner Jr.StarringJane WymanRobert FoxworthSusan S...

 

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada. Busca fuentes: «Paradoja del cuadrado perdido» – noticias · libros · académico · imágenesEste aviso fue puesto el 10 de octubre de 2017. Animación de la paradoja del cuadrado perdido. La paradoja del cuadrado perdido o rompecabezas del cuadrado perdido es una ilusión óptica utilizada en matemáticas para razonar sobre las figuras geométricas. La paradoja tiene en cuent...

 

Genus of flowering plants Brunia The leaves and the knobby inflorescences of Brunia sp. (family Bruniaceae) Scientific classification Kingdom: Plantae Clade: Tracheophytes Clade: Angiosperms Clade: Eudicots Clade: Asterids Order: Bruniales Family: Bruniaceae Genus: BruniaLam. Brunia is a genus of shrubs of the family Bruniaceae, native to the cape region of South Africa.[1] Taxonomy The genus was described by Carl Linnaeus and published in Species Plantarum 1: 199 in the year 1753. Th...

Cette page concerne l'année 1922 (MCMXXII en chiffres romains) du calendrier grégorien. Pour l'année 1922 av. J.-C., voir 1922 av. J.-C. Chronologies Données clés 1919 1920 1921  1922  1923 1924 1925Décennies :1890 1900 1910  1920  1930 1940 1950Siècles :XVIIIe XIXe  XXe  XXIe XXIIeMillénaires :-Ier Ier  IIe  IIIe Chronologies géographiques Afrique Afrique du Sud, Algérie, Angola, Bénin, Botswana, Burkina Faso, Burundi, Camero...

 

Title in the peerage of Ireland Earl ErneArms: Argent, a Lion rampant Azure. Crest: A Dragon's Head couped Vert, emitting fire from the mouth and ears proper. Supporters: On either side a Lion Azure, crowned with an Earl's Coronet proper.Creation date19 August 1789Created byGeorge IIIPeeragePeerage of IrelandFirst holderJohn Creighton, 2nd Baron ErnePresent holderJohn Crichton, 7th Earl ErneHeir presumptiveCharles CrichtonRemainder toThe 1st Earl's heirs male of the body lawfully begottenSubs...

 

Adlershof ist eine Weiterleitung auf diesen Artikel. Siehe auch: Rittergut Adlershof, Sachsen. Adlershof Ortsteil von Berlin Adlershof auf der Karte von Treptow-Köpenick. Koordinaten 52° 26′ 16″ N, 13° 32′ 51″ O52.437913.547634Koordinaten: 52° 26′ 16″ N, 13° 32′ 51″ O Höhe 34 m ü. NHN Fläche 6,11 km² Einwohner 22.186 (31. Dez. 2023) Bevölkerungsdichte 3631 Einwohner/km² Eingem...

Smith–Hammond–Middleton Memorial CenterSHM Memorial CenterLocation300 College StreetOrangeburg, South Carolina 29117Coordinates33°30′04″N 80°50′47″W / 33.500979°N 80.846522°W / 33.500979; -80.846522OwnerSouth Carolina State UniversityOperatorSouth Carolina State UniversityCapacity3,200SurfaceHardwoodConstructionBroke ground1966OpenedFebruary 8, 1968Construction cost$1.4 million($12.3 million in 2023 dollars[1])TenantsSouth Carolina State Bu...

 

В Википедии есть статьи о других людях с такой фамилией, см. Тарасов; Тарасов, Даниил. Даниил Тарасов Полное имя Даниил Вадимович Тарасов Позиция вратарь Рост 196 см Вес 84 кг Хват левый Страна Россия Дата рождения 27 марта 1999(1999-03-27) (25 лет) Место рождения Новокузнецк, Кемеро...