Putting Type Annotations to Work

Putting Type Annotations to Work

Loyola University Chicago Loyola eCommons Computer Science: Faculty Publications and Other Works Faculty Publications 1-1996 Putting Type Annotations to Work Martin Odersky Universität Karlsruhe Konstantin Laufer Loyola University Chicago, [email protected] Follow this and additional works at: https://ecommons.luc.edu/cs_facpubs Part of the Computer Sciences Commons Recommended Citation M. Odersky and K. Läufer, Putting type annotations to work, in Proceedings of the 23rd ACM SIGPLAN- SIGACT symposium on Principles of programming languages, ser. POPL '96. New York, NY, USA: ACM, 1996, pp. 54-67. [Online]. Available: http://webpages.cs.luc.edu/~laufer/papers/popl96.pdf This Conference Proceeding is brought to you for free and open access by the Faculty Publications at Loyola eCommons. It has been accepted for inclusion in Computer Science: Faculty Publications and Other Works by an authorized administrator of Loyola eCommons. For more information, please contact [email protected]. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License. Copyright © 1996 Martin Odersky and Konstantin Läufer Putting Typ e Annotations to Work Martin Odersky Konstantin Läufer Department of Computer Science Department of Mathematical Sciences University of Karlsruhe Loyola University Chicago 76128 Karlsruhe, Germany Chicago, Illinois 60626, USA o [email protected] [email protected] Abstract egories. Curry-style reconstruction lls in p olymorphic abstractions and applications together with typ e an- We study an extension of the Hindley/Milner system notations. This style of reconstruction is complicated with explicit typ e scheme annotations and typ e decla- by the lack of principal typ es in F . The prop osed 2 rations. The system can express p olymorphic function schemes all have rather complex inference rules with arguments, user-dened data typ es with abstract com- cumb ersome conversions b etween declared and inferred p onents, and structure typ es with p olymorphic elds. typ es [McC84, OG89]. By contrast, Church-style re- More generally, all programs of the p olymorphic lambda construction requires the p osition of typ e abstractions calculus can b e enco ded by a translation b etween typ- and applications to b e indicated in the original source. ing derivations. We show that typ e reconstruction in This style of reconstruction also called partial typ e this system can b e reduced to the decidable problem of reconstruction [Bo e89] was shown to b e reducible to rst-order unication under a mixed prex. higher-order unication [Pfe88]. Even though Church- style reconstruction is thus undecidable in general, this result op ens up the p ossibility for semi-decision pro ce- 1 Intro duction dures that work well in practice. On the other hand, the p osition of a p olymorphic application has to b e in- Two of the most imp ortant cornerstones of typ e theory dicated explicitly in the source, which leads to a rather for programming languages are the Hindley/Milner sys- unfamiliar co ding style, at least for programmers used tem and the second-order p olymorphic -calculus. This to the Hindley/Milner system. pap er tries to explore some of the design space b etween Recently there havebeenseveral approaches towards them. extending the Hindley/Milner system with some form The Hindley/Milner system [Mil78] extends the of emb edded quantiers without going all the wayto simply-typ ed -calculus with p olymorphic let-b ound the p olymorphic -calculus. For instance, Launch- identiers. It thus adds considerable expressivepower bury and Peyton Jones have presented an elegant yet retains the prop erty thatnotyp e annotations in typ e system for syntactic control of interference [LPar] programs are needed, since most general typ es can b e that uses second-order universal quantication. Perry inferred [DM82]. This prop erty has made the Hind- [Per90] and Läufer and Odersky [LO94]have studied ley/Milner system very app ealing as a basis of typ e existential quantication in algebraic datatyp es, which systems for programming languages. yields a Hindley/Milner style version of Mitchell and By contrast, the second-order p olymorphic - Plotkin's abstract typ es [MP88]. This style of existen- calculus F [Gir71, Rey74] allows p olymorphic typ es 2 tial quantication has b een implemented in compilers everywhere, but requires explicit annotations of b oth for Hop e [Per90], Haskell [Aug94] and CAML [MP93]. argumenttyp es and typ e instantiations. The general Rémy [Rém94] has extended Läufer and Odersky's sys- problem of typ echecking without typ e annotations is tem with universal quantication in datatyp es, so that undecidable [Wel94], but there havebeenseveral ap- ob jects with p olymorphic metho ds can b e expressed. proaches towards typ e reconstruction where some typ e Jones [Jon95] has investigated record typ es with p oly- information is given. These generally fall into two cat- morphic elements as a way to capture essential asp ects of mo dule systems. A prop osal along these lines has b een accepted for inclusion in Haskell 1.3. It seems that a combination of all of the ab ove sys- tems, while feasible, would b e rather unwieldy. Fortu- nately, it turns out that it is go o d enough to consider as a generalization a far simpler typ e system that captures only to typ es, never to typ e schemes. We get back the extensions' commonalities and expresses their dif- the full p ower of F in an indirect way,by allowing 2 ferences via enco dings. The extensions all have in com- typ e schemes as comp onents of explicitly declared mon that some form of explicit typ e information is re- data typ es. We show that we can enco de all of F 2 quired. For instance, Läufer and Odersky's and Rémy's by providing typ e declarations for all p olymorphic systems restrict existential quantication to the com- typ es in a given F program. This shows that our 2 p onents of explicitly declared datatyp es, while Jones typing discipline provides essentially the same ca- restricts universal quantication to elds of explicitly pabilities as F ,even though the enco ding in F 2 2 declared record typ es. do es not supp ort a formal comparison of expres- Here we study a typ e system that allows but do es sivepower in the sense of Felleisen [Fel90] since it not require explicit typ e scheme annotations for func- fails to b e comp ositional. tion arguments. The idea is that a formal function pa- Our typing discipline is a conservative extension of rameter is p olymorphic only if annotated with a typ e the Hindley/Milner system. Every typable program in scheme; otherwise the parameter is monomorphic, i.e. it that system continues to b e typable. This holds also if has a typ e, not a typ e scheme. As an imp ortant sp ecial typ e annotations in the style of ML or Haskell are added case we admit a rudimentary form of user-dened data to Hindley/Milner. Wewere able to show principal typ e declaration that intro duces a value constructor typ e prop erties and soundness and completeness of typ e with a single, p ossibly p olymorphic argument. Finally, inference fully analogous to the results stated by Damas we also allowtyp e scheme annotations for expressions. and Milner [DM82]. Since the engineering issues of Note that this is roughly the kind of typ e annota- ML-like programming languages and typ e checkers are tions that most programming languages oer or require. bynowwell understo o d, we b elieve that this makes The crucial extension of this pap er is that annotations our system promising as a practical kernel language on and declarations can refer to p olymorphic typ e schemes whichtyp e-systematic extensions of ML or Haskell can instead of just typ es. The ramications of this simple b e based. idea are quite substantial. The rest of this pap er is organized as follows. Sec- tion 2 presents our typ e system. Section 3 shows how We can express p olymorphic function arguments previous p olymorphic extensions of ML can b e em- by annotating the argument with a typ e scheme. b edded in it. Section 4 discusses an enco ding of the We can express data typ es and record typ es by p olymorphic -calculus. Section 5 states the most gen- their usual Church enco dings in a typ e-correct eral instantiation problem and presents an algorithm to way. solve it. Section 6 presents a typ e inference algorithm. Section 7 concludes. By slightly mo difying these Church enco dings, we can also express existentially or universally quan- tied comp onenttyp es of records and data typ es, 2 The Typ e System thereby subsuming the typ e systems of Perry, Figure 1 presents the abstract syntax of our kernel lan- Läufer and Odersky,Rémy, and Jones. The en- guage, Exp: . As in the Hindley/Milner system, we co dings give us principal typ e prop erties and typ e distinguish b etween typ es, which cannot contain quan- inference algorithms for these systems for free . tication over typ e variables, and typ e schemes, which Unlike the situation in the simply typ ed -calculus can. Compared to Milner's language Exp there are two [Mor68] or ML [Mil78], it is no longer p ossible to extensions that can b e considered indep endently, but reduce typ e inference to a simple Herbrand uni- that are most useful in combination. One extension cation problem. We need to consider instead considers typ e annotations for formal arguments and the problem of nding a most general substitution expressions; the other considers typ e declarations.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    15 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us