„Típuskövetkeztetés” változatai közötti eltérés

[nem ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
fordítás sablon a szerző alapján
Nincs szerkesztési összefoglaló
25. sor:
Az egyszerű, tipizált lambda számításokhoz mindhárom probléma meghatározható. Amikor kifejezőbb típusok megengedettek, a helyzet kevésbé kényelmes.
 
A típusok olyan jellemzők, amelyek jelen vannak néhány erősen statikusan tipizált nyelvben. Ez kifejezetten gyakran jellemző a [[Funkcionális programozás|funkcionális programozási nyelvekre]] általában. Egyes nyelvek közé típusú következtetést tartalmaznia C ++ 11, C # (3.0 verziótól kezdődően), [[:en:Chapel_(programming_language)|Chapel]], [[:en:Clean_(programming_language)|Clean]], [[:en:Crystal_(programming_language)|Crystal]], [[:en:D_(programming_language)|D]], [[:en:F_Sharp_(programming_language)|F#]],<ref>{{Cite web |last=cartermp |title=Type Inference - F# |url=https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/type-inference |access-date=2020-11-21 |website=docs.microsoft.com |language=en-us}}</ref> [[:en:FreeBASIC|FreeBASIC]], [[:en:Go_(programming_language)|Go]], [[:en:Haskell_(programming_language)|Haskell]], [[:en:Java_(programming_language)|Java]] (verziótól kezdődően 10),[[:en:Julia_(programming_language)|Julia]],<ref>{{Cite web |title=Inference · The Julia Language |url=https://docs.julialang.org/en/v1/devdocs/inference/ |access-date=2020-11-21 |website=docs.julialang.org}}</ref> [[:en:Kotlin_(programming_language)|Kotlin]], [[:en:ML_(programming_language)|ML]], [[:en:Nim_(programming_language)|Nim]], [[:en:OCaml|OCaml]], [[:en:Opa_(programming_language)|Opa]], [[:en:RPython|RPython]], [[:en:Rust_(programming_language)|Rust]], [[:en:Scala_(programming_language)|Scala]],<ref>{{Cite web |title=Type Inference |url=https://docs.scala-lang.org/tour/type-inference.html |access-date=2020-11-21 |website=Scala Documentation}}</ref> [[:en:Swift_(programming_language)|Swift]], [[:en:TypeScript|TypeScript]],<ref>{{Cite web |title=Documentation - Type Inference |url=https://www.typescriptlang.org/docs/handbook/type-inference.html |access-date=2020-11-21 |website=www.typescriptlang.org |language=en}}</ref> [[:en:Vala_(programming_language)|Vala]], [[:en:Dart_(programming_language)|Dart]],<ref>{{Cite web |title=The Dart type system |url=https://dart.dev/guides/language/type-system |access-date=2020-11-21 |website=dart.dev}}</ref> és <a href="https[[://en.wikipedia.org/wiki/:Visual_Basic_.NET#2008_(VB_9.0)" rel="mw:ExtLink" title="Visual Basic.NET" class="cx-link" data-linkid="170">|Visual Basic</a>]] (kezdve a 9.0 verziótól). Többségük a típuskövetkeztetés egyszerű formáját alkalmazza; a Hindley-Milner típusú rendszer teljesebb típusú következtetésre képes. A típusok kikövetkeztetésének képessége sok programozási feladatot megkönnyít, így a programozó szabadon hagyhatja a típusjegyzeteket, miközben engedélyezi a típusellenőrzést.
 
Bizonyos programozási nyelvekben minden értéknek van egy [[Adattípus|adattípusa, amelyet]] kifejezetten deklaráltak a fordítás idején, ami korlátozza azokat az értékeket, amelyeket egy adott kifejezés futás közben kaphat. Ami leginkább ellentmondásossá teszi a fordítási idő és a futási idő közti különbséget, az a [[Futásidejű fordítás|just-in-time fordítás]]. Azonban, történelmileg, ha az érték típusa csak futás közben ismert, akkor ezeket a nyelveket dinamikusan gépelik. Eltérő nyelvekben a kifejezés típusa csak fordításkor ismert; az ilyen nyelvek tipizálása statikusan történik. A legtöbb statikusan tipizált nyelvben a függvények és a helyi változók bemeneti és kimeneti típusait általában típusjegyzetekkel adják meg. Például a [[C (programozási nyelv)|C-ben]] :<syntaxhighlight lang="c">