Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3337932.3338811acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Dependent object types with implicit functions

Published: 17 July 2019 Publication History

Abstract

DOT (Dependent Object Types) is an object calculus with path-dependent types and abstract type members, developed to serve as a theoretical foundation for the Scala programming language. As yet, DOT does not model all of Scala's features, but a small subset. We present the calculus DIF (DOT with Implicit Functions), which extends the set of features modelled by DOT to include implicit functions, a feature of Scala to aid modularity of programs. We show type safety of DIF, and demonstrate that the generic programming focused use cases for implicit functions in Scala are also expressible in DIF.

References

[1]
Nada Amiii, Adriaan Moors, and Martin Odersky. 2012. Dependent Object Types. In 19th International Workshop on Foundations of Object-Oriented Languages.
[2]
Nada Amin and Tiark Rompf. 2017. Type Soundness Proofs with Definitional Interpreters. ACM SIGPLANNotices 52,1 (2017), 666--679.
[3]
Nada Amin, Tiark Rompf, and Martin Odersky. 2014. Foundations of path-dependent types. In Acm Sigplan Notices, Vol 49. ACM, 233--249.
[4]
Philipp Haller. 2012. On the Integration of the Actor Model in Mainstream Technologies: The Scala Perspective. In Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions. ACM, 1--6.
[5]
Alex Jeffery andMartin Berger. 2018. Asynchronous Sessions with Implicit Functions and Messages. International Symposium on Theoretical Aspects of Software Engineering (TASE), 9--16.
[6]
Stefan Kaes. 1988. Parametric Overloading in Polymorphic Programming Languages. In ESOP '88, H. Ganzinger (Ed). Springer Berlin Heidelberg, Berlin, Heidelberg, 131--144.
[7]
Oleg Kiselyov. 2014. Implementing, and Understanding Type Classes. https://web.archive.Org/web/20180910165920/http://okmij.org/ftp/Computation/typeclass.html.
[8]
Jeffrey R. Lewis, John Launchbury, Erik Meijer, and Mark B. Shields. 2000. Implicit Parameters: Dynamic Scoping with Static Types. In Proc. POPL.
[9]
Sam Lindley, Conor McBride, Phil Trinder, Don Sannella, Nada Amin, Karl Samuel Grütter, Martin Odersky, Tiark Rompf and Sandro Stucki 2016. The Essence of Dependent Object Types. 9600 (03 2016).
[10]
Martin Odersky et al. 2017. Dotty Compiler: A Next Generation Compiler for Scala. https://web.archive.org/web/20170325001401/http://dotty.epfl.ch/.
[11]
Martin Odersky, Olivier Blanvillain, Fengyun Liu, Aggelos Biboudis, Heather Miller, and Sandro Stucki. 2018. Simplicitly: Foundations and Applications of Implicit Function Types. Proc. POPL (2018).
[12]
Bruno C. d. S. Oliveira, Adriaan Moors, andMartin Odersky. 2010. Type Classes as Objects and Implicits. ACM Sigplan Notices 45, 10 (2010), 341--360.
[13]
Bruno C. d S. Oliveira, Tom Schrijvers, Wontae Choi, Wonchan Lee, Kwangkeun Yi, and Philip Wadler. 2012. The Implicit Calculus: A New Foundation for Generic programming. In ACM SIGPLAN Notices, Vol 47. ACM, 35--44.
[14]
Benjamin C Pierce and David N Turner. 2000. Local Type Inference. ACM Transactions on Programming Languages and Systems (TOPLAS) 22,1 (2000), 1--44.
[15]
Tiark Rompf and Nada Amin. 2016. Type soundness for dependent object types (DOT). In Acm Sigplan Notices, Vol. 51. ACM, 624--641.
[16]
P. Wadler and S. Blott. 1989. How to Make Ad-hoc Polymorphism Less Ad Hoc. In Proceedings of the 16th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '89). ACM, New York, NY, USA, 60--76.

Cited By

View all
  • (2020)Resolution as intersection subtyping via Modus PonensProceedings of the ACM on Programming Languages10.1145/34282744:OOPSLA(1-30)Online publication date: 13-Nov-2020

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
Scala '19: Proceedings of the Tenth ACM SIGPLAN Symposium on Scala
July 2019
37 pages
ISBN:9781450368247
DOI:10.1145/3337932
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 July 2019

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. DOT
  2. Dotty
  3. Scala
  4. calculus
  5. dependent object types
  6. implicit functions
  7. implicit parameters
  8. implicits
  9. objects
  10. type classes

Qualifiers

  • Research-article

Conference

Scala '19
Sponsor:
Scala '19: Tenth ACM SIGPLAN Scala Symposium
July 17, 2019
London, United Kingdom

Acceptance Rates

Scala '19 Paper Acceptance Rate 5 of 6 submissions, 83%;
Overall Acceptance Rate 5 of 6 submissions, 83%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2020)Resolution as intersection subtyping via Modus PonensProceedings of the ACM on Programming Languages10.1145/34282744:OOPSLA(1-30)Online publication date: 13-Nov-2020

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media