Repository logo

Infoscience

  • English
  • French
Log In
Logo EPFL, École polytechnique fédérale de Lausanne

Infoscience

  • English
  • French
Log In
  1. Home
  2. Academic and Research Output
  3. Conferences, Workshops, Symposiums, and Seminars
  4. Simplicitly: Foundations and Applications of Implicit Function Types
 
conference paper not in proceedings

Simplicitly: Foundations and Applications of Implicit Function Types

Odersky, Martin  
•
Blanvillain, Olivier  
•
Liu, Fengyun  
Show more
2017
45th ACM SIGPLAN Symposium on Principles of Programming Languages

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.

  • Files
  • Details
  • Metrics
Type
conference paper not in proceedings
DOI
10.1145/3158130
Author(s)
Odersky, Martin  
Blanvillain, Olivier  
Liu, Fengyun  
Biboudis, Aggelos
Miller, Heather  
Stucki, Sandro  
Date Issued

2017

Editorial or Peer reviewed

REVIEWED

Written at

EPFL

EPFL units
LAMP1  
Event nameEvent placeEvent date
45th ACM SIGPLAN Symposium on Principles of Programming Languages

Los Angeles, California, United States

Sun 7 - Sat 13 January 2018

Available on Infoscience
July 11, 2017
Use this identifier to reference this record
https://infoscience.epfl.ch/handle/20.500.14299/139244
Logo EPFL, École polytechnique fédérale de Lausanne
  • Contact
  • infoscience@epfl.ch

  • Follow us on Facebook
  • Follow us on Instagram
  • Follow us on LinkedIn
  • Follow us on X
  • Follow us on Youtube
AccessibilityLegal noticePrivacy policyCookie settingsEnd User AgreementGet helpFeedback

Infoscience is a service managed and provided by the Library and IT Services of EPFL. © EPFL, tous droits réservés