Simplicitly: Foundations and applications of implicit function types

28Citations
Citations of this article
20Readers
Mendeley users who have this article in their library.

Abstract

Understanding a program entails understanding its context; dependencies, configurations and even implementations are all forms of contexts. Modern programming languages and theorem provers offer an array of constructs to define contexts, implicitly. Scala offers implicit parameters which are used pervasively, but which cannot be abstracted over. This paper describes a generalization of implicit parameters to implicit function types, a powerful way to abstract over the context in which some piece of code is run. We provide a formalization based on bidirectional type-checking that closely follows the semantics implemented by the Scala compiler. To demonstrate their range of abstraction capabilities, we present several applications that make use of implicit function types. We show how to encode the builder pattern, tagless interpreters, reader and free monads and we assess the performance of the monadic structures presented.

Author supplied keywords

Cite

CITATION STYLE

APA

Odersky, M., Blanvillain, O., Liu, F., Biboudis, A., Miller, H., & Stucki, S. (2018). Simplicitly: Foundations and applications of implicit function types. Proceedings of the ACM on Programming Languages, 2(POPL). https://doi.org/10.1145/3158130

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free