{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T10:49:39Z","timestamp":1770288579618,"version":"3.49.0"},"reference-count":29,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2019,10,10]],"date-time":"2019-10-10T00:00:00Z","timestamp":1570665600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100010663","name":"H2020 European Research Council","doi-asserted-by":"publisher","award":["695412"],"award-info":[{"award-number":["695412"]}],"id":[{"id":"10.13039\/100010663","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1544542,1617892"],"award-info":[{"award-number":["1544542,1617892"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100007297","name":"Office of Naval Research","doi-asserted-by":"publisher","award":["503353"],"award-info":[{"award-number":["503353"]}],"id":[{"id":"10.13039\/100007297","id-type":"DOI","asserted-by":"publisher"}]},{"name":"Ministerstvo \u00f0kolstv\u00ed, Ml\u00e1de\u00f0e a T\u00f0lov\u00f0chovy","award":["CZ.02.1.010.00.015_0030000421"],"award-info":[{"award-number":["CZ.02.1.010.00.015_0030000421"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2019,10,10]]},"abstract":"<jats:p>The Scala programming language offers two distinctive language features implicit parameters and implicit conversions, often referred together as implicits. Announced without fanfare in 2004, implicits have quickly grown to become a widely and pervasively used feature of the language. They provide a way to reduce the boilerplate code in Scala programs. They are also used to implement certain language features without having to modify the compiler. We report on a large-scale study of the use of implicits in the wild. For this, we analyzed 7,280 Scala projects hosted on GitHub, spanning over 8.1M call sites involving implicits and 370.7K implicit declarations across 18.7M lines of Scala code.<\/jats:p>","DOI":"10.1145\/3360589","type":"journal-article","created":{"date-parts":[[2019,10,11]],"date-time":"2019-10-11T14:53:33Z","timestamp":1570805613000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["Scala implicits are everywhere: a large-scale study of the use of Scala implicits in the wild"],"prefix":"10.1145","volume":"3","author":[{"given":"Filip","family":"K\u0159ikava","sequence":"first","affiliation":[{"name":"Czech Technical University, Czechia"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Heather","family":"Miller","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jan","family":"Vitek","sequence":"additional","affiliation":[{"name":"Czech Technical University, Czechia \/ Northeastern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2019,10,10]]},"reference":[{"key":"e_1_2_2_1_1","unstructured":"Eugene Burmako. 2017. Unification of Compile-Time and Runtime Metaprogramming in Scala. (2017).  Eugene Burmako. 2017. Unification of Compile-Time and Runtime Metaprogramming in Scala. (2017)."},{"key":"e_1_2_2_2_1","unstructured":"Jorge Vicente Cantero. 2018. Speeding Up Compilation Time with scalac-profiling. https:\/\/bit.ly\/32gwTwP  Jorge Vicente Cantero. 2018. Speeding Up Compilation Time with scalac-profiling. https:\/\/bit.ly\/32gwTwP"},{"key":"e_1_2_2_3_1","volume-title":"Assessing Diffusion and Perception of Test Smells in Scala Projects. In International Conference on Mining Software Repositories (MSR).","author":"Bleser Jonas De","year":"2019","unstructured":"Jonas De Bleser , Dario Di Nucci , and Coen De Roover . 2019 . Assessing Diffusion and Perception of Test Smells in Scala Projects. In International Conference on Mining Software Repositories (MSR). Jonas De Bleser, Dario Di Nucci, and Coen De Roover. 2019. Assessing Diffusion and Perception of Test Smells in Scala Projects. In International Conference on Mining Software Repositories (MSR)."},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.5555\/2487085.2487132"},{"key":"e_1_2_2_5_1","unstructured":"Li Haoyi. 2016. Implicit Design Patterns in Scala. https:\/\/web.archive.org\/web\/20180326160306\/http:\/\/www.lihaoyi.com\/ post\/ImplicitDesignPatternsinScala.html .  Li Haoyi. 2016. Implicit Design Patterns in Scala. https:\/\/web.archive.org\/web\/20180326160306\/http:\/\/www.lihaoyi.com\/ post\/ImplicitDesignPatternsinScala.html ."},{"key":"e_1_2_2_6_1","unstructured":"Joeri De Koster. 2015. Domains: Language Abstractions for Controlling Shared Mutable State in Actor Systems. Ph.D. Dissertation. Vrije Universiteit Brussel Belgium.  Joeri De Koster. 2015. Domains: Language Abstractions for Controlling Shared Mutable State in Actor Systems. Ph.D. Dissertation. Vrije Universiteit Brussel Belgium."},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1173706.1173732"},{"key":"e_1_2_2_8_1","volume-title":"Implicit Parameters: Dynamic Scoping with Static Types. In Symposium on Principles of Programming Languages (POPL).","author":"Lewis Jeffrey R.","unstructured":"Jeffrey R. Lewis , John Launchbury , Erik Meijer , and Mark B. Shields . 2000 . Implicit Parameters: Dynamic Scoping with Static Types. In Symposium on Principles of Programming Languages (POPL). Jeffrey R. Lewis, John Launchbury, Erik Meijer, and Mark B. Shields. 2000. Implicit Parameters: Dynamic Scoping with Static Types. In Symposium on Principles of Programming Languages (POPL)."},{"key":"e_1_2_2_9_1","unstructured":"Lightbend. 2018. Scala Developer Suvey. https:\/\/bit.ly\/2Uk56sB .  Lightbend. 2018. Scala Developer Suvey. https:\/\/bit.ly\/2Uk56sB ."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133908"},{"key":"e_1_2_2_11_1","unstructured":"Chris Marshall. 2009. Is the Scala 2.8 collections library a case of the longest suicide note in history? https:\/\/stackoverflow. com\/questions\/1722726\/is-the-scala-2-8-collections-library-a-case-of-the-longest-suicide-note-in-hist .  Chris Marshall. 2009. Is the Scala 2.8 collections library a case of the longest suicide note in history? https:\/\/stackoverflow. com\/questions\/1722726\/is-the-scala-2-8-collections-library-a-case-of-the-longest-suicide-note-in-hist ."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509547"},{"key":"e_1_2_2_13_1","volume-title":"Spores: A Type-Based Foundation for Closures in the Age of Concurrency and Distribution. In European Conference on Object-Oriented Programming (ECOOP).","author":"Miller Heather","year":"2014","unstructured":"Heather Miller , Philipp Haller , and Martin Odersky . 2014 . Spores: A Type-Based Foundation for Closures in the Age of Concurrency and Distribution. In European Conference on Object-Oriented Programming (ECOOP). Heather Miller, Philipp Haller, and Martin Odersky. 2014. Spores: A Type-Based Foundation for Closures in the Age of Concurrency and Distribution. In European Conference on Object-Oriented Programming (ECOOP)."},{"key":"e_1_2_2_14_1","unstructured":"Martin Odersky. 2017. What to leave implicit. https:\/\/www.youtube.com\/watch?v=Oij5V7LQJsA . In ScalaDays Chicago.  Martin Odersky. 2017. What to leave implicit. https:\/\/www.youtube.com\/watch?v=Oij5V7LQJsA . In ScalaDays Chicago."},{"key":"e_1_2_2_15_1","doi-asserted-by":"crossref","unstructured":"Martin Odersky Olivier Blanvillain Fengyun Liu Aggelos Biboudis Heather Miller and Sandro Stucki. 2017. Simplicitly: foundations and applications of implicit function types. PACMPL 2 POPL.  Martin Odersky Olivier Blanvillain Fengyun Liu Aggelos Biboudis Heather Miller and Sandro Stucki. 2017. Simplicitly: foundations and applications of implicit function types. PACMPL 2 POPL.","DOI":"10.1145\/3158130"},{"key":"e_1_2_2_16_1","unstructured":"Martin Odersky and Adriaan Moors. 2009. Fighting bit rot with types (experience report: Scala collections). In Foundations of Software Technology and Theoretical Computer Science (FST TCS).  Martin Odersky and Adriaan Moors. 2009. Fighting bit rot with types (experience report: Scala collections). In Foundations of Software Technology and Theoretical Computer Science (FST TCS)."},{"key":"e_1_2_2_17_1","volume-title":"Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA).","author":"Adriaan Moors Bruno Oliveira C. d. S.","year":"2010","unstructured":"Bruno Oliveira C. d. S. , Adriaan Moors , and Martin Odersky . 2010 . Type classes as objects and implicits . In Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). Bruno Oliveira C. d. S., Adriaan Moors, and Martin Odersky. 2010. Type classes as objects and implicits. In Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)."},{"key":"e_1_2_2_18_1","volume-title":"Conference on Programming Language Design and Implementation (PLDI).","author":"Tom Schrijvers Bruno Oliveira C. d. S.","year":"2012","unstructured":"Bruno Oliveira C. d. S. , Tom Schrijvers , Wontae Choi , Wonchan Lee , and Kwangkeun Yi . 2012 . The implicit calculus: a new foundation for generic programming . In Conference on Programming Language Design and Implementation (PLDI). Bruno Oliveira C. d. S., Tom Schrijvers, Wontae Choi, Wonchan Lee, and Kwangkeun Yi. 2012. The implicit calculus: a new foundation for generic programming. In Conference on Programming Language Design and Implementation (PLDI)."},{"key":"e_1_2_2_19_1","unstructured":"Andrew Phillips and Nermin Serifovic. 2014. Scala Puzzlers. Artima Inc.  Andrew Phillips and Nermin Serifovic. 2014. Scala Puzzlers. Artima Inc."},{"key":"e_1_2_2_20_1","volume-title":"European Conference on Object-Oriented Programming (ECOOP).","author":"Pradel Michael","year":"2015","unstructured":"Michael Pradel and Koushik Sen . 2015 . The Good, the Bad, and the Ugly: An Empirical Study of Implicit Type Conversions in JavaScript . In European Conference on Object-Oriented Programming (ECOOP). Michael Pradel and Koushik Sen. 2015. The Good, the Bad, and the Ugly: An Empirical Study of Implicit Type Conversions in JavaScript. In European Conference on Object-Oriented Programming (ECOOP)."},{"key":"e_1_2_2_21_1","doi-asserted-by":"crossref","unstructured":"John C. Reynolds. 1991. The coherence of languages with intersection types. Theoretical Aspects of Computer Software  John C. Reynolds. 1991. The coherence of languages with intersection types. Theoretical Aspects of Computer Software","DOI":"10.1007\/3-540-54415-1_70"},{"key":"e_1_2_2_22_1","unstructured":"Arjen Rouvoet. 2016. Programs for Free: Towards the Formalization of Implicit Resolution in Scala. Master\u2019s thesis. TU Delft.  Arjen Rouvoet. 2016. Programs for Free: Towards the Formalization of Implicit Resolution in Scala. Master\u2019s thesis. TU Delft."},{"key":"e_1_2_2_23_1","unstructured":"Miles Sabin. 2019. Shapeless. https:\/\/github.com\/milessabin\/shapeless .  Miles Sabin. 2019. Shapeless. https:\/\/github.com\/milessabin\/shapeless ."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796818000242"},{"key":"e_1_2_2_25_1","unstructured":"Joshua D Suereth. 2013. Implicit Classes. https:\/\/web.archive.org\/web\/20170922191333\/https:\/\/docs.scala-lang.org\/overviews\/ core\/implicit-classes.html .  Joshua D Suereth. 2013. Implicit Classes. https:\/\/web.archive.org\/web\/20170922191333\/https:\/\/docs.scala-lang.org\/overviews\/ core\/implicit-classes.html ."},{"key":"e_1_2_2_26_1","first-page":"1","article-title":"Gnu parallel-the command-line power tool","volume":"36","author":"Ole Tange","year":"2011","unstructured":"Ole Tange et al. 2011 . Gnu parallel-the command-line power tool . The USENIX Magazine 36 , 1 . Ole Tange et al. 2011. Gnu parallel-the command-line power tool. The USENIX Magazine 36, 1.","journal-title":"The USENIX Magazine"},{"key":"e_1_2_2_27_1","volume-title":"European Conference on Object-Oriented Programming (ECOOP).","author":"Tasharofi Samira","unstructured":"Samira Tasharofi , Peter Dinges , and Ralph E. Johnson . 2013. Why Do Scala Developers Mix the Actor Model with other Concurrency Models? . In European Conference on Object-Oriented Programming (ECOOP). Samira Tasharofi, Peter Dinges, and Ralph E. Johnson. 2013. Why Do Scala Developers Mix the Actor Model with other Concurrency Models?. In European Conference on Object-Oriented Programming (ECOOP)."},{"key":"e_1_2_2_28_1","unstructured":"Eric Torreborre. 2017. Achieving 3.2x Faster Scala Compile Time. https:\/\/jobs.zalando.com\/tech\/blog\/achieving-3.2x-fasterscala-compile-time\/  Eric Torreborre. 2017. Achieving 3.2x Faster Scala Compile Time. https:\/\/jobs.zalando.com\/tech\/blog\/achieving-3.2x-fasterscala-compile-time\/"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75283"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3360589","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3360589","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3360589","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:22:59Z","timestamp":1750202579000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3360589"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,10,10]]},"references-count":29,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2019,10,10]]}},"alternative-id":["10.1145\/3360589"],"URL":"https:\/\/doi.org\/10.1145\/3360589","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,10,10]]},"assertion":[{"value":"2019-10-10","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}