Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
System F
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Use in programming languages== The version of System F used in this article is as an explicitly typed, or Church-style, calculus. The typing information contained in λ-terms makes [[type-checking]] straightforward. [[Joe Wells]] (1994) settled an "embarrassing open problem" by proving that type checking is [[decision problem|undecidable]] for a Curry-style variant of System F, that is, one that lacks explicit typing annotations.<ref>{{cite web |url=http://www.macs.hw.ac.uk/~jbw/research-summary.html |title= Joe Wells's Research Interests |date=2005-01-20 |publisher=Heriot-Watt University |first=J.B. |last=Wells }}</ref><ref>{{cite journal |first=J.B. |last=Wells |title=Typability and type checking in System F are equivalent and undecidable |journal=Ann. Pure Appl. Logic |volume=98 |issue=1–3 |pages=111–156 |year=1999 |doi=10.1016/S0168-0072(98)00047-5 |doi-access=free }}{{cite web|url=http://www.church-project.org/reports/Wells:APAL-1999-v98-no-note.html|title=The Church Project: Typability and type checking in {S}ystem {F} are equivalent and undecidable|date=29 September 2007|url-status=dead|archive-url=https://web.archive.org/web/20070929211126/http://www.church-project.org/reports/Wells:APAL-1999-v98-no-note.html|archive-date=29 September 2007}}</ref> Wells's result implies that [[type inference]] for System F is impossible. A restriction of System F known as "[[Hindley–Milner]]", or simply "HM", does have an easy type inference algorithm and is used for many [[statically typed]] [[functional programming languages]] such as [[Haskell (programming language)|Haskell 98]] and the [[ML programming language|ML]] family. Over time, as the restrictions of HM-style type systems have become apparent, languages have steadily moved to more expressive logics for their type systems. [[Glasgow Haskell Compiler|GHC]], a Haskell compiler, goes beyond HM (as of 2008) and uses System F extended with non-syntactic type equality;<ref>{{Cite web|url=https://gitlab.haskell.org/ghc/ghc/wikis/commentary/compiler/fc|title=System FC: equality constraints and coercions|website=gitlab.haskell.org|access-date=2019-07-08}}</ref> non-HM features in [[OCaml]]'s type system include [[generalized algebraic data types|GADT]].<ref>{{cite web|title=OCaml 4.00.1 release notes|date=2012-10-05|access-date=2019-09-23|url=https://ocaml.org/releases/4.00.1.html|website=ocaml.org}}</ref><ref>{{cite web|title=OCaml 4.09 reference manual|date=2012-09-11|access-date=2019-09-23|url=http://caml.inria.fr/pub/docs/manual-ocaml-4.09/manual033.html#s%3Agadts}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)