A List of Successes That Can Change the World pp 249-272

Part of the Lecture Notes in Computer Science book series (LNCS, volume 9600) | Cite as

The Essence of Dependent Object Types

  • Nada Amin
  • Samuel Grütter
  • Martin Odersky
  • Tiark Rompf
  • Sandro Stucki


Focusing on path-dependent types, the paper develops foundations for Scala from first principles. Starting from a simple calculus D\(_{<:}\) of dependent functions, it adds records, intersections and recursion to arrive at DOT, a calculus for dependent object types. The paper shows an encoding of System F with subtyping in D\(_{<:}\) and demonstrates the expressiveness of DOT by modeling a range of Scala constructs in it.


Calculus Dependent types Scala 


  1. Amadio, R.M., Cardelli, L.: Subtyping recursive types. ACM Trans. Program. Lang. Syst. 15(4), 575–631 (1993)CrossRefGoogle Scholar
  2. Amin, N., Moors, A., Odersky, M.: Dependent object types. In: FOOL (2012)Google Scholar
  3. Amin, N., Rompf, T., Odersky, M.: Foundations of path-dependent types. In: OOPSLA (2014)Google Scholar
  4. Ariola, Z.M., Maraist, J., Odersky, M., Felleisen, M., Wadler, P.: A call-by-need lambda calculus. In: POPL (1995)Google Scholar
  5. Cardelli, L., Martini, S., Mitchell, J.C., Scedrov, A.: An extension of system F with subtyping. Inf. Comput. 109(1/2), 4–56 (1994)MathSciNetCrossRefMATHGoogle Scholar
  6. Clarke, D., Drossopoulou, S., Noble, J., Wrigstad, T.: Tribe: a simple virtual class calculus. In: AOSD (2007)Google Scholar
  7. Coppo, M., Dezani-Ciancaglini, M., Sallé, P.: Functional characterization of some semantic equalities inside lambda-calculus. In: Automata, Languages and Programming, 6th Colloquium (1979)Google Scholar
  8. Cremet, V., Garillot, F., Lenglet, S., Odersky, M.: A core calculus for scala type checking. In: Královič, R., Urzyczyn, P. (eds.) MFCS 2006. LNCS, vol. 4162, pp. 1–23. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  9. Cretin, J., Rémy, D.: System F with coercion constraints. In: CSL-LICS (2014)Google Scholar
  10. Dreyer, D., Rossberg, A.: Mixin’ up the ML module system. In: ICFP (2008)Google Scholar
  11. Ernst, E.: Family polymorphism. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 303. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  12. Ernst, E.: Higher-order hierarchies. In: ECOOP (2003)Google Scholar
  13. Ernst, E., Ostermann, K., Cook, W.R.: A virtual class calculus. In: POPL (2006)Google Scholar
  14. Harper, R., Honsell, F., Plotkin, G.: A framework for defining logics. J. ACM 40(1), 143–184 (1993)MathSciNetCrossRefMATHGoogle Scholar
  15. Harper, R., Lillibridge, M.: A type-theoretic approach to higher-order modules with sharing. In: POPL (1994)Google Scholar
  16. Adsul, B., Viroli, M.: On variance-based subtyping for parametric types. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, p. 441. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  17. Leroy, X.: Manifest types, modules and separate compilation. In: POPL (1994)Google Scholar
  18. Macqueen, D.: Using dependent types to express modular structure. In: POPL (1986)Google Scholar
  19. Montagu, B., Rémy, D.: Modeling abstract types in modules with open existential types. In: POPL (2009)Google Scholar
  20. Moors, A., Piessens, F., Odersky, M.: Safe type-level abstraction in scala. In: FOOL (2008)Google Scholar
  21. Odersky, M., Cremet, V., Röckl, C., Zenger, M.: A nominal theory of objects with dependent types. In: ECOOP (2003)Google Scholar
  22. Odersky, M., Petrashko, D., Martres, G., others.: The dotty project (2013). https://github.com/lampepfl/dotty
  23. van der Ploeg, A.: The HMap package (2013). https://hackage.haskell.org/package/HMap
  24. Pretty, J.: Minimizing the slippery surface of failure. Talk at Scala World (2015). https://www.youtube.com/watch?v=26UHdZUsKkE
  25. Rompf, T., Amin, N.: From F to DOT: Type soundness proofs with definitional interpreters. Purdue University, Technical report (2015). http://arxiv.org/abs/1510.05216
  26. Rossberg, A.: 1ML - core and modules united (f-ing first-class modules). In: ICFP (2015)Google Scholar
  27. Rossberg, A., Russo, C.V., Dreyer, D.: F-ing modules. J. Funct. Program. 24(5), 529–607 (2014)MathSciNetCrossRefMATHGoogle Scholar
  28. Scherer, G., Rémy, D.: Full reduction in the face of absurdity. In: Vitek, J. (ed.) ESOP 2015. LNCS, vol. 9032, pp. 685–709. Springer, Heidelberg (2015)CrossRefGoogle Scholar
  29. Tate, R., Leung, A., Lerner, S.: Taming wildcards in java’s type system. In: PLDI (2011)Google Scholar
  30. Torgersen, M., Ernst, E., Hansen, C.P.: WildFJ. In: FOOL (2004)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  • Nada Amin
    • 1
  • Samuel Grütter
    • 1
  • Martin Odersky
    • 1
  • Tiark Rompf
    • 2
  • Sandro Stucki
    • 1
  1. 1.EPFLLausanneSwitzerland
  2. 2.Purdue UniversityWest LafayetteUSA

Personalised recommendations