000229878 001__ 229878
000229878 005__ 20180317093324.0
000229878 0247_ $$2doi$$a10.1145/3158130
000229878 037__ $$aCONF
000229878 245__ $$aSimplicitly: Foundations and Applications of Implicit Function Types
000229878 269__ $$a2017
000229878 260__ $$c2017
000229878 336__ $$aConference Papers
000229878 520__ $$aUnderstanding 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.
000229878 700__ $$0241835$$aOdersky, Martin$$g126003
000229878 700__ $$0250832$$aBlanvillain, Olivier$$g184098
000229878 700__ $$0249854$$aLiu, Fengyun$$g244269
000229878 700__ $$aBiboudis, Aggelos
000229878 700__ $$0242185$$aMiller, Heather$$g191683
000229878 700__ $$0246677$$aStucki, Sandro$$g152185
000229878 7112_ $$a45th ACM SIGPLAN Symposium on Principles of Programming Languages$$cLos Angeles, California, United States$$dSun 7 - Sat 13 January 2018
000229878 8564_ $$s704045$$uhttps://infoscience.epfl.ch/record/229878/files/simplicitly_1.pdf$$yPreprint$$zPreprint
000229878 909CO $$ooai:infoscience.tind.io:229878$$pIC$$pconf
000229878 909C0 $$0252187$$pLAMP$$xU10409
000229878 917Z8 $$x282127
000229878 917Z8 $$x282127
000229878 917Z8 $$x282127
000229878 917Z8 $$x282127
000229878 937__ $$aEPFL-CONF-229878
000229878 973__ $$aEPFL$$rREVIEWED$$sPUBLISHED
000229878 980__ $$aCONF