Advertisement

Uniqueness Typing Simplified

  • Edsko de Vries
  • Rinus Plasmeijer
  • David M. Abrahamson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5083)

Abstract

We present a uniqueness type system that is simpler than both Clean’s uniqueness system and a system we proposed previously. The new type system is straightforward to implement and add to existing compilers, and can easily be extended with advanced features such as higher rank types and impredicativity. We describe our implementation in Morrow, an experimental functional language with both these features. Finally, we prove soundness of the core type system with respect to the call-by-need lambda calculus.

Keywords

Type System Uniqueness Typing Linear Logic Boolean Expression Typing Rule 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Barendsen, E., Smetsers, S.: Conventional and uniqueness typing in graph rewrite systems. Technical Report CSI-R9328, University of Nijmegen (December 1993)Google Scholar
  2. 2.
    Barendsen, E., Smetsers, S.: Uniqueness typing for functional languages with graph rewriting semantics. Math. Struct. in Computer Science 6, 579–612 (1996)zbMATHMathSciNetGoogle Scholar
  3. 3.
    De Vries, E., Plasmeijer, R., Abrahamson, D.: Uniqueness typing redefined. In: Horváth, Z., Zsók, V., Butterfield, A. (eds.) IFL 2006. LNCS, vol. 4449. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  4. 4.
    Maraist, J., Odersky, M., Wadler, P.: The call-by-need lambda calculus. JFP 8(3), 275–317 (1998)zbMATHCrossRefMathSciNetGoogle Scholar
  5. 5.
    Jones, M.P.: A system of constructor classes: overloading and implicit higher-order polymorphism. In: FPCA 1993, pp. 52–61 (1993)Google Scholar
  6. 6.
    Sheard, T.: Putting Curry-Howard to work. In: Haskell Workshop 2005, pp. 74–85. ACM, New York (2005)CrossRefGoogle Scholar
  7. 7.
    Sulzmann, M., Chakravarty, M.M.T., Jones, S.P., Donnelly, K.: System F with type equality coercions. In: TLDI 2007, pp. 53–66. ACM Press, New York (2007)CrossRefGoogle Scholar
  8. 8.
    Damas, L., Milner, R.: Principal type-schemes for functional programs. In: POPL 1982, pp. 207–212 (1982)Google Scholar
  9. 9.
    Baader, F., Niphow, T.: Term Rewriting and All That. Cambridge University Press, Cambridge (1998)Google Scholar
  10. 10.
    Brown, F.M.: Boolean Reasoning. Dover Publications, Inc. (2003)Google Scholar
  11. 11.
    Peyton Jones, S., Vytiniotis, D., Weirich, S., Shields, M.: Practical type inference for arbitrary-rank types. JFP 17(1), 1–82 (2007)zbMATHCrossRefMathSciNetGoogle Scholar
  12. 12.
    Leijen, D.: HMF: Simple type inference for first-class polymorphism. Technical Report MSR-TR-2007-118, Microsoft Research, RedmondGoogle Scholar
  13. 13.
    Vytiniotis, D., Weirich, S., Peyton Jones, S.: Boxy types: inference for higher-rank types and impredicativity. In: ICFP 2006, pp. 251–262 (2006)Google Scholar
  14. 14.
    Botlan, D.L., Rémy, D.: MLF: raising ML to the power of System F. In: ICFP 2003, pp. 27–38 (2003)Google Scholar
  15. 15.
    Walker, D.: Substructural type systems. In: Pierce, B. (ed.) Advanced Topics in Types and Programming Languages. The MIT Press, Cambridge (2005)Google Scholar
  16. 16.
    Cervesato, I., Pfenning, F.: A linear logical framework. Inf. Comput. 179(1), 19–75 (2002)zbMATHCrossRefMathSciNetGoogle Scholar
  17. 17.
    Launchbury, J.: A natural semantics for lazy evaluation. In: POPL 1993, pp. 144–154 (1993)Google Scholar
  18. 18.
    de Vries, E.: Uniqueness typing simplified—technical appendix. Technical Report TCD-CS-2008-19, Trinity College DublinGoogle Scholar
  19. 19.
    Harrington, D.: Uniqueness logic. Theor. Comput. Sci. 354(1), 24–41 (2006)zbMATHCrossRefMathSciNetGoogle Scholar
  20. 20.
    Hage, J., Holdermans, S., Middelkoop, A.: A generic usage analysis with subeffect qualifiers. In: ICFP 2007, pp. 235–246. ACM, New York (2007)CrossRefGoogle Scholar
  21. 21.
    Hage, J., Holdermans, S.: Heap recycling for lazy languages. In: PEPM 2008, pp. 189–197. ACM, New York (2008)CrossRefGoogle Scholar
  22. 22.
    Wadler, P.: Is there a use for linear logic? In: PEPM 1991, pp. 255–273 (1991)Google Scholar
  23. 23.
    Turner, D.N., Wadler, P., Mossin, C.: Once upon a type. In: FPCA 1995, pp. 1–11 (1995)Google Scholar
  24. 24.
    Guzman, J., Hudak, P.: Single-threaded polymorphic lambda calculus. In: Logic in Computer Science 1990, June 1990, pp. 333–343 (1990)Google Scholar
  25. 25.
    Plasmeijer, R., van Eekelen, M.: Clean language report (version 2.1)Google Scholar
  26. 26.
    Odersky, M.: Observers for linear types. In: Krieg-Brückner, B. (ed.) ESOP 1992. LNCS, vol. 582, pp. 390–407. Springer, Heidelberg (1992)Google Scholar
  27. 27.
    Aydemir, B., Charguéraud, A., Pierce, B.C., Pollack, R., Weirich, S.: Engineering formal metatheory. SIGPLAN Not. 43(1), 3–15 (2008)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Edsko de Vries
    • 1
  • Rinus Plasmeijer
    • 2
  • David M. Abrahamson
    • 1
  1. 1.Trinity College DublinIreland
  2. 2.Radboud Universiteit NijmegenNetherlands

Personalised recommendations