2017
DOI: 10.1145/3158130
|View full text |Cite
|
Sign up to set email alerts
|

Simplicitly: foundations and applications of implicit function types

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… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
35
0

Year Published

2018
2018
2022
2022

Publication Types

Select...
4
3

Relationship

0
7

Authors

Journals

citations
Cited by 30 publications
(35 citation statements)
references
References 26 publications
0
35
0
Order By: Relevance
“…The client/session tier-crossing primitives need to transmit values across the network. This requirement shows up in the API as type-classes encoded as Scala's implicit arguments [21,20]. All values that cross the network are required to be serializable, visible in our API as extra requirements on the type in form of: A: Encoder: Decoder.…”
Section: Crossing Client and Session Tiermentioning
confidence: 99%
“…The client/session tier-crossing primitives need to transmit values across the network. This requirement shows up in the API as type-classes encoded as Scala's implicit arguments [21,20]. All values that cross the network are required to be serializable, visible in our API as extra requirements on the type in form of: A: Encoder: Decoder.…”
Section: Crossing Client and Session Tiermentioning
confidence: 99%
“…Stainless relies on Scala compiler front ends to obtain a symbol-resolved syntax tree. For example, implicit parameters in Scala [Odersky et al 2018] become ordinary explicit parameters by the time Stainless processes them. Conversely, many of the types we define in System FR do not have their counterparts in Scala.…”
Section: Related Workmentioning
confidence: 99%
“…As the compiler synthesises the missing arguments at compile-time from type information, calculi for implicit arguments might be best understood not as programming languages, but as meta-programming systems that generate code in a base language L from input programs in L with implicits. Indeed, SI [7], an extension of System F, Scala's foundations for implicits, does not have a selfcontained operational semantics, and is instead compiled to System F. We use the same approach, and translate IM to LAST.…”
Section: The Language Immentioning
confidence: 99%
“…A key notion in session types is that of duality, originating in linear logic: processes P and Q can be callee, and cannot be context dependent. Implicit arguments, a strict generalisation of default parameters, were pioneered in Haskell [6], and popularised as well as refined in Scala [7]: they separate the callee's declaration that an argument can be elided, from the caller's choice of elided values, allowing the latter to be context dependent. In this example f 2 is rewritten as above, but f 5 becomes f 5 (>), i.e.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation