{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,5]],"date-time":"2025-06-05T10:08:41Z","timestamp":1749118121427,"version":"3.40.3"},"publisher-location":"Berlin, Heidelberg","reference-count":48,"publisher":"Springer Berlin Heidelberg","isbn-type":[{"type":"print","value":"9783662466629"},{"type":"electronic","value":"9783662466636"}],"license":[{"start":{"date-parts":[[2015,1,1]],"date-time":"2015-01-01T00:00:00Z","timestamp":1420070400000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2015]]},"DOI":"10.1007\/978-3-662-46663-6_2","type":"book-chapter","created":{"date-parts":[[2015,4,1]],"date-time":"2015-04-01T18:37:47Z","timestamp":1427913467000},"page":"31-48","source":"Crossref","is-referenced-by-count":1,"title":["A Refactoring Library for Scala Compiler Extensions"],"prefix":"10.1007","author":[{"given":"Amanj","family":"Sherwany","sequence":"first","affiliation":[]},{"given":"Nosheen","family":"Zaza","sequence":"additional","affiliation":[]},{"given":"Nathaniel","family":"Nystrom","sequence":"additional","affiliation":[]}],"member":"297","reference":[{"key":"2_CR1","first-page":"1","volume-title":"Proceedings of the 2009 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2009","author":"U.A. Acar","year":"2009","unstructured":"Acar, U.A.: Self-adjusting computation (an overview). In: Proceedings of the 2009 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2009, pp. 1\u20136. ACM, New York (2009)"},{"key":"2_CR2","unstructured":"Apache Foundation: Apache Avro Records, http:\/\/avro.apache.org\/"},{"key":"2_CR3","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/2637647.2637649","volume-title":"Proceedings of the Fifth Annual Scala Workshop, SCALA 2014","author":"C. Bastin","year":"2014","unstructured":"Bastin, C., Ureche, V., Odersky, M.: ScalaDyno: Making Name Resolution and Type Checking Fault-tolerant. In: Proceedings of the Fifth Annual Scala Workshop, SCALA 2014, pp. 1\u20135. ACM, New York (2014)"},{"issue":"8","key":"2_CR4","doi-asserted-by":"publisher","first-page":"711","DOI":"10.1145\/6424.315691","volume":"29","author":"J. Bentley","year":"1986","unstructured":"Bentley, J.: Programming pearls: little languages. Commun. ACM\u00a029(8), 711\u2013721 (1986)","journal-title":"Commun. ACM"},{"key":"2_CR5","unstructured":"Bloch, J.: JSR 175: A metadata facility for the Java programming langauges (2004), http:\/\/jcp.org\/en\/jsr\/detail?id=175"},{"key":"2_CR6","unstructured":"Bracha, G.: Pluggable type systems. In: OOPSLA 2004 Workshop on Revival of Dynamic Languages (2004)"},{"key":"2_CR7","doi-asserted-by":"crossref","unstructured":"Burmako, E.: Scala Macros: Let Our Powers Combine! In: 4th Annual Workshop Scala 2013 (2013)","DOI":"10.1145\/2489837.2489840"},{"key":"2_CR8","unstructured":"Burmako, E.: Macro annotations (2014), http:\/\/docs.scala-lang.org\/overviews\/macros\/annotations.html"},{"key":"2_CR9","doi-asserted-by":"publisher","first-page":"519","DOI":"10.1145\/1094811.1094852","volume-title":"Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005","author":"P. Charles","year":"2005","unstructured":"Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., Sarkar, V.: X10: An object-oriented approach to non-uniform cluster computing. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, pp. 519\u2013538. ACM, New York (2005)"},{"key":"2_CR10","unstructured":"Danial, A.: Cloc, http:\/\/cloc.sourceforge.net\/"},{"key":"2_CR11","doi-asserted-by":"crossref","unstructured":"Dietl, W., Dietzel, S., Ernst, M.D., Muslu, K., Schiller, T.W.: Building and Using Pluggable Type-Checkers. In: Software Enginnering in Practice Track, International Conference on Software Engineering (ICSE) (May 2011)","DOI":"10.1145\/1985793.1985889"},{"issue":"4","key":"2_CR12","doi-asserted-by":"publisher","first-page":"295","DOI":"10.1007\/BF01806308","volume":"5","author":"R. Dybvig","year":"1993","unstructured":"Dybvig, R., Hieb, R., Bruggeman, C.: Syntactic abstraction in Scheme. LISP and Symbolic Computation\u00a05(4), 295\u2013326 (1993)","journal-title":"LISP and Symbolic Computation"},{"key":"2_CR13","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/1297027.1297029","volume-title":"Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems and Applications, OOPSLA 2007","author":"T. Ekman","year":"2007","unstructured":"Ekman, T., Hedin, G.: The JastAdd extensible Java compiler. In: Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems and Applications, OOPSLA 2007, pp. 1\u201318. ACM, New York (2007)"},{"key":"2_CR14","unstructured":"Ernst, M.: JSR 308: Annotations on Java Types (2004), https:\/\/jcp.org\/en\/jsr\/detail?id=308"},{"key":"2_CR15","unstructured":"Flanagan, D., Matsumoto, Y.: The Ruby Programming Language, 1st edn. O\u2019Reilly (2008)"},{"key":"2_CR16","unstructured":"Foundation, N.: NET compiler platform (\u201croslyn\u201d), https:\/\/github.com\/dotnet\/roslyn\/ (2014)"},{"issue":"4","key":"2_CR17","doi-asserted-by":"publisher","first-page":"381","DOI":"10.1023\/A:1010095604496","volume":"12","author":"Y. Futamura","year":"1999","unstructured":"Futamura, Y.: Partial evaluation of computation process\u2013an approach to a compiler-compiler. Higher-Order and Symbolic Computation\u00a012(4), 381\u2013391 (1999)","journal-title":"Higher-Order and Symbolic Computation"},{"key":"2_CR18","unstructured":"Gosling, J., Joy, B., Steele, G., Bracha, G.: Java(TM) Language Specification, 3rd edn. (Java (Addison-Wesley)). Addison-Wesley Professional (2005)"},{"key":"2_CR19","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"354","DOI":"10.1007\/978-3-642-14107-2_17","volume-title":"ECOOP 2010 \u2013 Object-Oriented Programming","author":"P. Haller","year":"2010","unstructured":"Haller, P., Odersky, M.: Capabilities for uniqueness and borrowing. In: D\u2019Hondt, T. (ed.) ECOOP 2010. LNCS, vol.\u00a06183, pp. 354\u2013378. Springer, Heidelberg (2010)"},{"key":"2_CR20","doi-asserted-by":"crossref","unstructured":"Hammer, M.A., Acar, U.A., Chen, Y.: CEAL: A C-based language for self-adjusting computation. In: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 25\u201337 (2009)","DOI":"10.1145\/1543135.1542480"},{"key":"2_CR21","volume-title":"C# Language Specification","author":"A. Hejlsberg","year":"2003","unstructured":"Hejlsberg, A., Wiltamuth, S., Golde, P.: C# Language Specification. Addison-Wesley Longman Publishing Co., Inc.,, Boston (2003)"},{"key":"2_CR22","unstructured":"Hudak, P.: Modular domain specific languages and tools. In: The Fifth International Conference on Software Reuse (ICSR) (1998)"},{"key":"2_CR23","volume-title":"Partial Evaluation and Automatic Program Generation","author":"N.D. Jones","year":"1993","unstructured":"Jones, N.D., Gomard, C.K., Sestoft, P.: Partial Evaluation and Automatic Program Generation. Prentice-Hall, Inc., Upper Saddle River (1993)"},{"key":"2_CR24","unstructured":"Jovanovic, V., Nikolaev, V., Pham, N.D., Ureche, V., Stucki, S., Koch, C., Odersky, M.: Yin-Yang: Transparent Deep Embedding of DSLs. Technical report, EPFL (2013), http:\/\/infoscience.epfl.ch\/record\/185832"},{"key":"2_CR25","doi-asserted-by":"crossref","unstructured":"Klint, P., van der Storm, T., Vinju, J.: Rascal: A domain specific language for source code analysis and manipulation. In: Ninth IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2009, pp. 168\u2013177. IEEE (2009)","DOI":"10.1109\/SCAM.2009.28"},{"key":"2_CR26","doi-asserted-by":"crossref","unstructured":"Kohlbecker, E., Friedman, D.P., Felleisen, M., Duba, B.: Hygienic macro expansion. In: Proceedings of the 1986 ACM Conference on LISP and Functional Programming, pp. 151\u2013161. ACM (1986)","DOI":"10.1145\/319838.319859"},{"key":"2_CR27","doi-asserted-by":"crossref","unstructured":"Konat, G.D.P., Vergu, V.A., Kats, L.C.L., Wachsmuth, G., Visser, E.: The Spoofax Name Binding Language. In: SPLASH, pp. 79\u201380. ACM (2012)","DOI":"10.1145\/2384716.2384748"},{"key":"2_CR28","doi-asserted-by":"crossref","unstructured":"Li, H., Thompson, S., Orosz, G., et al.: Refactoring with Wrangler: Data and process refactorings, and integration with Eclipse. In: Proceedings of the Seventh ACM SIGPLAN Erlang Workshop (September 2008)","DOI":"10.1145\/1411273.1411283"},{"key":"2_CR29","doi-asserted-by":"crossref","unstructured":"Markstrum, S., Marino, D., Esquivel, M., Millstein, T., Andreae, C., Noble, J.: JavaCOP: Declarative Pluggable Types for Java. ACM Trans. Program. Lang. Syst.\u00a032(2), 4:1\u20134:37 (2010)","DOI":"10.1145\/1667048.1667049"},{"key":"2_CR30","doi-asserted-by":"crossref","first-page":"117","DOI":"10.1145\/2103746.2103769","volume-title":"Proceedings of the ACM SIGPLAN 2012 Workshop on Partial Evaluation and Program Manipulation, PEPM 2012","author":"A. Moors","year":"2012","unstructured":"Moors, A., Rompf, T., Haller, P., Odersky, M.: Scala-virtualized. In: Proceedings of the ACM SIGPLAN 2012 Workshop on Partial Evaluation and Program Manipulation, PEPM 2012, pp. 117\u2013120. ACM, New York (2012)"},{"key":"2_CR31","doi-asserted-by":"crossref","unstructured":"Nystrom, N.: Harmless Compiler Plugins. In: Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs, FTfJP 2011, pp. 4:1\u20134:6. ACM, New York (2011)","DOI":"10.1145\/2076674.2076678"},{"key":"2_CR32","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"138","DOI":"10.1007\/3-540-36579-6_11","volume-title":"Compiler Construction","author":"N. Nystrom","year":"2003","unstructured":"Nystrom, N., Clarkson, M.R., Myers, A.C.: Polyglot: An Extensible Compiler Framework for Java. In: Hedin, G. (ed.) CC 2003. LNCS, vol.\u00a02622, pp. 138\u2013152. Springer, Heidelberg (2003)"},{"key":"2_CR33","unstructured":"Odersky, M., et al.: The Scala programming language (2006-2013), http:\/\/www.scala-lang.org"},{"key":"2_CR34","unstructured":"Peyton Jones, S.L.: Haskell 98 language and libraries: the revised report. Cambridge University Press (2003), http:\/\/www.haskell.org\/definition\/haskell98-report.pdf"},{"issue":"9","key":"2_CR35","doi-asserted-by":"publisher","first-page":"317","DOI":"10.1145\/1631687.1596596","volume":"44","author":"T. Rompf","year":"2009","unstructured":"Rompf, T., Maier, I., Odersky, M.: Implementing first-class polymorphic delimited continuations by a type-directed selective cps-transform. ACM Sigplan Notices\u00a044(9), 317\u2013328 (2009)","journal-title":"ACM Sigplan Notices"},{"issue":"6","key":"2_CR36","doi-asserted-by":"publisher","first-page":"121","DOI":"10.1145\/2184319.2184345","volume":"55","author":"T. Rompf","year":"2012","unstructured":"Rompf, T., Odersky, M.: Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs. Commun. ACM\u00a055(6), 121\u2013130 (2012)","journal-title":"Commun. ACM"},{"key":"2_CR37","doi-asserted-by":"crossref","unstructured":"Rompf, T., Sujeeth, A.K., Amin, N., Brown, K.J., Jovanovic, V., Lee, H., Jonnalagedda, M., Olukotun, K., Odersky, M.: Optimizing data structures in high-level programs: New directions for extensible compilers based on staging. In: Giacobazzi, R., Cousot, R. (eds.) POPL, pp. 497\u2013510. ACM (2013)","DOI":"10.1145\/2480359.2429128"},{"key":"2_CR38","unstructured":"Scala Developers: TreeDSL, https:\/\/github.com\/scala\/scala\/blob\/2.11.x\/src\/compiler\/scala\/tools\/nsc\/ast\/TreeDSL.scala"},{"key":"2_CR39","unstructured":"Shabalin, D., Burmako, E., Odersky, M.: Quasiquotes for Scala. Technical report, EPFL (2013), http:\/\/infoscience.epfl.ch\/record\/185242"},{"key":"2_CR40","doi-asserted-by":"crossref","first-page":"375","DOI":"10.1145\/2048066.2048098","volume-title":"Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA 2011","author":"A. Shali","year":"2011","unstructured":"Shali, A., Cook, W.R.: Hybrid Partial Evaluation. In: Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA 2011, pp. 375\u2013390. ACM, New York (2011)"},{"key":"2_CR41","doi-asserted-by":"publisher","first-page":"231","DOI":"10.1145\/154766.155373","volume-title":"The Second ACM SIGPLAN Conference on History of Programming Languages, HOPL-II","author":"G.L. Steele","year":"1993","unstructured":"Steele, G.L., Gabriel, R.P.: The evolution of Lisp. In: The Second ACM SIGPLAN Conference on History of Programming Languages, HOPL-II, pp. 231\u2013270. ACM, New York (1993)"},{"key":"2_CR42","unstructured":"Stocker, M., Sommerlad, P.: Scala Refactoring. Master\u2019s thesis, University of Applied Sciences Rapperswil (2010)"},{"key":"2_CR43","unstructured":"Sujeeth, A.K., Lee, H., Brown, K.J., Rompf, T., Chafi, H., Wu, M., Atreya, A.R., Odersky, M., Olukotun, K.: OptiML: An Implicitly Parallel Domain-Specific Language for Machine Learning. In: Getoor, L., Scheffer, T. (eds.) ICML, pp. 609\u2013616. Omnipress (2011)"},{"key":"2_CR44","first-page":"132","volume-title":"Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011","author":"S. Tobin-Hochstadt","year":"2011","unstructured":"Tobin-Hochstadt, S., St-Amour, V., Culpepper, R., Flatt, M., Felleisen, M.: Languages As Libraries. In: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, pp. 132\u2013141. ACM, New York (2011)"},{"key":"2_CR45","unstructured":"Tu, S., et al.: A Scala compiler plugin for Avro records (2011), http:\/\/code.google.com\/p\/avro-scala-compiler-plugin"},{"key":"2_CR46","doi-asserted-by":"crossref","unstructured":"Ureche, V., Talau, C., Odersky, M.: Miniboxing: improving the speed to code size tradeoff in parametric polymorphism translations. In: Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications, pp. 73\u201392. ACM (2013)","DOI":"10.1145\/2544173.2509537"},{"key":"2_CR47","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"304","DOI":"10.1007\/978-3-642-14107-2_15","volume-title":"ECOOP 2010 \u2013 Object-Oriented Programming","author":"M. Vaziri","year":"2010","unstructured":"Vaziri, M., Tip, F., Dolby, J., Hammer, C., Vitek, J.: Type System for Data-Centric Synchronization. In: D\u2019Hondt, T. (ed.) ECOOP 2010. LNCS, vol.\u00a06183, pp. 304\u2013328. Springer, Heidelberg (2010)"},{"key":"2_CR48","unstructured":"Zenger, M., Odersky, M.: Independently extensible solutions to the expression problem. In: 12th International Workshop on Foundations of Object-Oriented Languages (2005)"}],"container-title":["Lecture Notes in Computer Science","Compiler Construction"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-662-46663-6_2","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,5,4]],"date-time":"2022-05-04T02:59:54Z","timestamp":1651633194000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-662-46663-6_2"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015]]},"ISBN":["9783662466629","9783662466636"],"references-count":48,"URL":"https:\/\/doi.org\/10.1007\/978-3-662-46663-6_2","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2015]]}}}