https://dl.acm.org/doi/10.1145/3622818 skip to main content * ACM Digital Library home * ACM Association for Computing Machinery corporate logo * Advanced Search * Browse * About * + Sign in + Register * * Advanced Search * Journals * Magazines * Proceedings * Books * SIGs * Conferences * People * * More * Search ACM Digital Library[ ] SearchSearch Advanced Search Proceedings of the ACM on Programming Languages * Journal Home * Just Accepted * Latest Issue * * Archive * Authors + Author Guidelines + Calls for Papers + PACMPL Policies + ACM Author Policies + Author List * Editors + Editorial Board + Associate Editors Welcome Video * Reviewers * Open Access + PACMPL Open Access + ACM Open Access * Award Winners * About + About PACMPL + Announcements + Abstracting/Indexing + PACMPL Affiliations * Contact Us * More * Home * ACM Journals * Proceedings of the ACM on Programming Languages * Vol. 7, No. OOPSLA2 * Rhombus: A New Spin on Macros without All the Parentheses research-article Open access [icon-small][icon-small] Share on * * * * * * Rhombus: A New Spin on Macros without All the Parentheses Authors: [contrib-81]Matthew Flatt, [default-pr]Taylor Allred, [default-pr]Nia Angle, [default-pr]Stephen De Gabrielle, + 11, [contrib-81]Robert Bruce Findler, [default-pr]Jack Firth, + 9, [default-pr]Kiran Gopinathan, [contrib-88]Ben Greenman, [default-pr] Siddhartha Kasivajhula, [default-pr]Alex Knauth, + 5, [contrib-81]Jay McCarthy, [default-pr]Sam Phillips, [default-pr]Sorawee Porncharoenwase, [default-pr]Jens Axel Sogaard, [default-pr]Sam Tobin-Hochstadt (Less)Authors Info & Claims Proceedings of the ACM on Programming Languages, Volume 7, Issue OOPSLA2 Article No.: 242, Pages 574 - 603 https://doi.org/10.1145/3622818 Published: 16 October 2023 Publication History Related Artifact: Artifact for "Rhombus: A New Spin on Macros without All the Parentheses" October 2023 software https://doi.org/10.1145/ 3580417 3citation1,366Downloads Metrics Total Citations3 Total Downloads1,366 Last 12 Months1,303 Last 6 weeks104 Get Citation Alerts New Citation Alert added! This alert has been successfully added and will be sent to: You will be notified whenever a record that you have chosen has been cited. To manage your alert preferences, click on the button below. Manage my Alerts New Citation Alert! Please log in to your account PDFeReader * Contents Proceedings of the ACM on Programming Languages Volume 7, Issue OOPSLA2 PREVIOUS ARTICLE How Profilers Can Help Navigate Type Migration Previous NEXT ARTICLE Towards Better Semantics Exploration for Browser Fuzzing Next + Abstract + References ACM Digital Library * + Information & Contributors + Bibliometrics & Citations + View Options + References + Media + Tables + Share Abstract Rhombus is a new language that is built on Racket. It offers the same kind of language extensibility as Racket itself, but using traditional (infix) notation. Although Rhombus is far from the first language to support Lisp-style macros without Lisp-style parentheses, Rhombus offers a novel synthesis of macro technology that is practical and expressive. A key element is the use of multiple binding spaces for context-specific sublanguages. For example, expressions and pattern-matching forms can use the same operators with different meanings and without creating conflicts. Context-sensitive bindings, in turn, facilitate a language design that reduces the notational distance between the core language and macro facilities. For example, repetitions can be defined and used in binding and expression contexts generally, which enables a smoother transition from programming to metaprogramming. Finally, since handling static information (such as types) is also a necessary part of growing macros beyond Lisp, Rhombus includes support in its expansion protocol for communicating static information among bindings and expressions. The Rhombus implementation demonstrates that all of these pieces can work together in a coherent and user-friendly language. References [1] Annika Aasa, Kent Petersson, and Dan Synek. Concrete Syntax for Data Objects in Functional Languages. In Proc. Lisp and Functional Programming, 1988. Digital Library Google Scholar [2] Michael D. Adams. Towards the Essence of Hygiene. In Proc. Principles of Programming Languages, 2015. Digital Library Google Scholar [3] Eric Allen, Ryan Culpepper, Janus Dam Nielsen, Jon Rafkind, and Sukyoung Ryu. Growing a Syntax. In Proc. Foundations of Object-Oriented Languages, 2009. Google Scholar [4] Nia Angle. Parendown. 2017. https://github.com/lathe/ parendown-for-racket Google Scholar [5] Arne Babenhauserheide. SRFI-119 : Wisp: Simpler Indentation-Sensitive Scheme. 2015. https://srfi.schemers.org/srfi-119/srfi119.html Google Scholar [6] Jonathan Bachrach and Keith Playford. D-Expressions: Lisp Power, Dylan Style. 1999. https://people.csail.mit.edu/jrb/ Projects/ dexprs.pdf Google Scholar [7] Jonathan Bachrach and Keith Playford. The Java Syntactic Extender (JSE). In Proc. Object-Oriented Programming, Systems, Languages and Applications, 2001. Digital Library Google Scholar [8] Jason Baker and Wilson C. Hsieh. Maya: Multiple-Dispatch Syntax Extension in Java. In Proc. Object-Oriented Programming, Systems, Languages and Applications, 2002. Digital Library Google Scholar [9] Michael Ballantyne, Alexis King, and Matthias Felleisen. Macros for Domain-Specific Languages. In Proc. Object-Oriented Programming, Systems, Languages and Applications, 2020. Digital Library Google Scholar [10] Langston Barrett, David Thrane Christiansen, and Samuel Gelineau. Predictable Macros for Hindley-Milner (Extended Abstract). In Proc. Workshop on Type-Driven Development, 2020. Google Scholar [11] Eli Barzilay. The Scribble Reader: An Alternative to S-expressions for Textual Content. In Proc. Scheme Workshop, 2009. Google Scholar [12] Gerard Berry and Georges Gonthier. The Esterel Synchronous Programming Language: Design, Semantics, Implementation. Science of Computer Programming 19 ( 2 ), 1992. 0167-6423 ( 92 ) 90005-V Google Scholar [13] William J. Bowman, Swaha Miller, Vincent St {-} Amour, and R. Kent Dybvig. Profile-Guided Meta-Programming. In Proc. Programming Language Design and Implementation, 2015. Digital Library Google Scholar [14] Eugene Burmako. Unification of Compile-Time and Runtime Metaprogramming in Scala. Ph.D. dissertation, EPFL, 2017. Crossref Google Scholar [15] Luca Cardelli, Florian Matthes, and Martin Abadi. Extensible Grammars for Language Specialization. In Proc. Workshop on Database Programming Languages-Object Models and Languages, 1993. Crossref Google Scholar [16] Stephen Chang, Alex Knauth, and Ben Greenman. Type Systems as Macros. In Proc. Principles of Programming Languages, 2017. Digital Library Google Scholar [17] William Clinger and Jonathan Rees. Macros that Work. In Proc. Principles of Programming Languages, 1991. Digital Library Google Scholar [18] Ryan Culpepper and Matthias Felleisen. Fortifying Macros. Journal of Functional Programming 22 ( 4-5 ), 2012. Digital Library Google Scholar [19] Lukas Diekmann and Laurence Tratt. Eco: A Language Composition Editor. In Proc. Software Language Engineering, 2014. Crossref Google Scholar [20] Tim Disney, Nathan Faubion, David Herman, and Cormac Flanagan. Sweeten Your JavaScript: Hygienic Macros for ES5. In Proc. Dynamic Languages Symposium, 2014. Digital Library Google Scholar [21] R. Kent Dybvig, Daniel P. Friedman, and Christopher T. Haynes. Expansion-Passing Style: Beyond Conventional Macros. In Proc. Lisp and Functional Programming, 1986. Digital Library Google Scholar [22] R. Kent Dybvig, Robert Hieb, and Carl Bruggeman. Syntactic Abstraction in Scheme. Lisp and Symbolic Computation 5 ( 4 ), 1993. Digital Library Google Scholar [23] Sebastian Erdweg, Tillmann Rendel, Christian Kastner, and Klaus Ostermann. SugarJ: Library-Based Syntactic Language Extensibility. In Proc. Object-Oriented Programming, Systems, Languages and Applications, 2011. Digital Library Google Scholar [24] Moritz Eysholdt and Heiko Behrens. Xtext: Implement Your Language Faster than the Quick and Dirty Way. In Proc. 2010, 2010. Digital Library Google Scholar [25] Jose Falcon and William R. Cook. Gel: A Generic Extensible Language. In Proc. IFIP TC 2 Working Conference Domain-Specific Languages, 2009. Crossref Google Scholar [26] Marc Feeley. Gambit: Scheme Infix Syntax Extension. 2019. http:// www.iro.umontreal.ca/~gambit/doc/gambit.html# Schemeinfix-syntax-extension Google Scholar [27] Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam TobinHochstadt. A Programmable Programming Language. Communications of the ACM 61 ( 3 ), 2018. Digital Library Google Scholar [28] Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. DrScheme: a Programming Environment for Scheme. Journal of Functional Programming 12 ( 2 ), 2002. Digital Library Google Scholar [29] Matthew Flatt. Compilable and Composable Macros: You Want it When? In Proc. International Conference on Functional Programming, 2002. Digital Library Google Scholar [30] Matthew Flatt. Binding as Sets of Scopes. In Proc. Principles of Programming Languages, 2016. Digital Library Google Scholar [31] Matthew Flatt, Taylor Allred, Nia Angle, Stephen De Gabrielle, Robert Bruce Findler, Jack Firth, Kiran Gopinathan, Ben Greenman, Alex Knauth, Siddhartha Kasivajhula, Jay McCarthy, Sam Phillips, Sorawee Porncharoenwase, Jens Axel Sogaard, and Sam Tobin-Hochstadt. Artifact for Rhombus: A New Spin on Macros without All the Parentheses. 2023. Digital Library Google Scholar [32] Matthew Flatt, Eli Barzilay, and Robert Bruce Findler. Scribble: Closing the Book on Ad Hoc Documentation Tools. In Proc. International Conference on Functional Programming, 2009. Digital Library Google Scholar [33] Matthew Flatt, Ryan Culpepper, Robert Bruce Findler, and David Darais. Macros that Work Together: Compile-Time Bindings, Partial Expansion, and Definition Contexts. Journal of Functional Programming 22 ( 2 ), pp. 181-216, 2012. Digital Library Google Scholar [34] Matthew Flatt, Caner Derici, R. Kent Dybvig, Andrew W. Keep, Gustavo E. Massaccesi, Sarah Spall, Sam Tobin-Hochstadt, and Jon Zeppieri. Rebuilding Racket on Chez Scheme (Experience Report). In Proc. International Conference on Functional Programming, 2019. Digital Library Google Scholar [35] Steven E. Ganz, Amr Sabry, and Walid Taha. Macros as Multi-Stage Computations: Type-Safe, Generative, Binding Macros in MacroML. In Proc. International Conference on Functional Programming, 2001. Digital Library Google Scholar [36] Timothy P. Hart. MACRO Definitions for LISP. Massachusetts Institute of technology, AIM-057, 1963. Digital Library Google Scholar [37] Inkle. Ink. 2023. https://www.inklestudios.com/ink/ Google Scholar [38] JetBrains. MPS. 2003. https://www.jetbrains.com/mps/ Google Scholar [39] Simon Peyton Jones and Tim Sheard. Template Meta-Programming for Haskell. In Proc. Haskell Workshop, 2002. Digital Library Google Scholar [40] Lennart C. L. Kats and Eelco Visser. The Spoofax Language Workbench: Rules for Declarative Specification of Languages and IDEs. In Proc. Object-Oriented Programming, Systems, Languages and Applications, 2010. Digital Library Google Scholar [41] Alexis King. The Hackett Programming Language. 2018. https:// lexi-lambda.github.io/hackett/ Google Scholar [42] P. Klint, Tijs van der Storm, and Jurgen Vinju. RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation. In Proc. Working Conference on Source Code Analysis and Manipulation, 2009. 2009.28 Crossref Google Scholar [43] Eugene Kohlbecker, Daniel P. Friedman, Matthias Felleisen, and Bruce Duba. Hygienic Macro Expansion. In Proc. Lisp and Functional Programming, 1986. Digital Library Google Scholar [44] Eugene Kohlbecker and Mitch Wand. Macro-by-Example : Deriving Syntactic Transformations from Their Specifications. In Proc. Principles of Programming Languages, 1987. Digital Library Google Scholar [45] Shriram Krishnamurthi. Programming Languages: Application and Interpretation. 2006. Google Scholar [46] Shriram Krishnamurthi, Matthias Felleisen, and Bruce F. Duba. From Macros to Reusable Generative Programming. In Proc. Generative Programming: Concepts and Experiences, 1999. Crossref Google Scholar [47] B. M. Leavenworth. Syntax Macros and Extended Translation. Communications of the ACM 9 ( 11 ), pp. 790-793, 1966. Digital Library Google Scholar [48] Odersky, Martin, Philippe Altherr, Vincent Cremet, Burak Emir, Sebastian Maneth, Stephane Micheloud, Nikolay Mihaylov, Michel Schinz, Erik Stenman, and Matthias Zenger. An Overview of the Scala Programming Language. Ecole Polytechnique Federale de Lausanne, LAMP-REPORT-2006-001, 2006. Google Scholar [49] John McCarthy. History of LISP. SIGPLAN Notices 31 ( 8 ), 1978. Digital Library Google Scholar [50] Chris McCord. Metaprogramming Elixir: Write Less Code, Get More Done (and Have Fun!). O'Reilly, 2015. Google Scholar [51] Egil Moller. SRFI-49 : Indentation-Sensitive Syntax. 2003. https:// srfi.schemers.org/srfi-49/srfi-49.html Google Scholar [52] Tobias Nipkow, Lawrence C. Paulson, and Markus Wenzel. Isabelle/HOL: a Proof Assistant for Higher-Order Logic. Springer Science & Business Media, 2002. Crossref Google Scholar [53] OCaml. Preprocessors. 2023. https://ocaml.org/docs/metaprogramming Google Scholar [54] Cyrus Omar and Jonathan Aldrich. Reasonably Programmable Literal Notation. In Proc. International Conference on Functional Programming, 2018. Digital Library Google Scholar [55] Cyrus Omar, Darya Kurilova, Ligia Nistor, Benjamin Chung, Alex Potanin, and Jonathan Aldrich. Safely Composable TypeSpecific Languages. In Proc. European Conference on Object-Oriented Programming, 2014. Digital Library Google Scholar [56] Phoenix. Phoenix Framework. 2023. https://www.inklestudios.com/ink/ Google Scholar [57] Vaughan R. Pratt. Top Down Operator Precedence. In Proc. Principles of Programming Languages, 1973. Digital Library Google Scholar [58] Jon Rafkind and Matthew Flatt. Honu: Syntactic Extension for Algebraic Notation through Enforestation. In Proc. Generative Programming: Concepts and Experiences, 2012. Digital Library Google Scholar [59] Rust. Macros. 2023. https://doc.rust-lang.org/reference/macros.html Google Scholar [60] Sukyoung Ryu. Parsing Fortress Syntax. In Proc. Principles and Practice of Programming in Java, 2009. Digital Library Google Scholar [61] Scala. Macros in Scala 3. 2023. https://docs.scala-lang.org/scala3/ guides/macros/index.html Google Scholar [62] Guy L. Steele, Eric Allen, David Chase, Christine Flood, Victor Luchangco, Jan-Willem Maessen, and Sukyoung Ryu. Fortress (Sun HPCS Language). Encyclopedia of Parallel Computing, 2011. Crossref Google Scholar [63] Don Syme, Gregory Neverov, and James Margetson. Extensible Pattern Matching Via a Lightweight Language Extension. In Proc. International Conference on Functional Programming, 2007. Digital Library Google Scholar [64] Walid Taha and Tim Sheard. MetaML and Multi-Stage Programming with Explicit Annotations. Theoretical Computer Science 248 ( 1-2 ), pp. 211-242, 2000. Digital Library Google Scholar [65] Sam Tobin-Hochstadt. Extensible Pattern Matching in an Extensible Language. 2011. Crossref Google Scholar [66] Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, and Matthias Felleisen. Languages as Libraries. In Proc. Programming Language Design and Implementation, 2011. Digital Library Google Scholar [67] Masaru Tomita. An Eficient Context-Free Parsing Algorithm for Natural Languages. In Proc. International Joint Conference on Artificial Intelligence, 1985. Digital Library Google Scholar [68] Sebastian Ullrich and Leonardo de Moura. Beyond Notations: Hygienic Macro Expansion for Theorem Proving Languages. In Proc. International Joint Conference on Automated Reasoning, 2020. Digital Library Google Scholar [69] Philip Wadler. Views: A Way for Pattern Matching to Cohabit with Data Abstraction. In Proc. Principles of Programming Languages, 1987. Digital Library Google Scholar [70] David A. Wheeler. Readable Lisp S-expressions Project. 2013. https:// readable.sourceforge.io/ Google Scholar Cited By View all * Klopp DErdweg SPacak A(2024)A Typed Multi-level Datalog IR and Its Compiler FrameworkProceedings of the ACM on Programming Languages10.1145/36897678:OOPSLA2(1586-1614)Online publication date: 8-Oct-2024 https://dl.acm.org/doi/10.1145/3689767 * Clebsch SBlomqvist MCastegren EJohnson MParkinson MLaemmel R Pereira JMosses P(2024)Trieste: A C++ DSL for Flexible Tree RewritingProceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/ 3687997.3695647(184-189)Online publication date: 17-Oct-2024 https://dl.acm.org/doi/10.1145/3687997.3695647 * Lee YGopinathan KYang ZFlatt MSergey ILaemmel RPereira JMosses P (2024)DSLs in Racket: You Want It How, Now?Proceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695645(84-103)Online publication date: 17-Oct-2024 https://dl.acm.org/doi/10.1145/3687997.3695645 Index Terms 1. Rhombus: A New Spin on Macros without All the Parentheses 1. Software and its engineering 1. Software notations and tools 1. General programming languages 1. Language types 1. Extensible languages Recommendations * Macros for domain-specific languages Macros provide a powerful means of extending languages. They have proven useful in both general-purpose and domain-specific programming contexts. This paper presents an architecture for implementing macro-extensible DSLs on top of macro-extensible host ... Read More * Composable and compilable macros:: you want it when? Many macro systems, especially for Lisp and Scheme, allow macro transformers to perform general computation. Moreover, the language for implementing compile-time macro transformers is usually the same as the language for implementing run-time functions. ... Read More * Composable and compilable macros:: you want it when? ICFP '02: Proceedings of the seventh ACM SIGPLAN international conference on Functional programming Many macro systems, especially for Lisp and Scheme, allow macro transformers to perform general computation. Moreover, the language for implementing compile-time macro transformers is usually the same as the language for implementing run-time functions. ... Read More Comments Please enable JavaScript to view thecomments powered by Disqus. Information & Contributors Information Published In cover image Proceedings of the ACM on Programming Languages Proceedings of the ACM on Programming Languages Volume 7, Issue OOPSLA2 October 2023 2250 pages EISSN:2475-1421 DOI:10.1145/3554312 * Editor: * Author PictureMichael Hicks Amazon, USA Issue's Table of Contents Copyright (c) 2023 Owner/Author. This work is licensed under a Creative Commons Attribution 4.0 International License. Publisher Association for Computing Machinery New York, NY, United States Publication History Published: 16 October 2023 Published in PACMPL Volume 7, Issue OOPSLA2 Permissions Request permissions for this article. Request Permissions Check for updates Badges * [icon-large]Artifacts Available / v1.1 * [icon-large]Artifacts Evaluated & Reusable / v1.1 Author Tags 1. binding spaces 2. infix syntax 3. macros Qualifiers * Research-article Contributors [loader-7e6] Other Metrics View Article Metrics Bibliometrics & Citations Bibliometrics Article Metrics * 3 Total Citations View Citations * 1,366 Total Downloads * Downloads (Last 12 months)1,303 * Downloads (Last 6 weeks)104 Reflects downloads up to 01 Nov 2024 Other Metrics View Author Metrics Citations Cited By View all * Klopp DErdweg SPacak A(2024)A Typed Multi-level Datalog IR and Its Compiler FrameworkProceedings of the ACM on Programming Languages10.1145/36897678:OOPSLA2(1586-1614)Online publication date: 8-Oct-2024 https://dl.acm.org/doi/10.1145/3689767 * Clebsch SBlomqvist MCastegren EJohnson MParkinson MLaemmel R Pereira JMosses P(2024)Trieste: A C++ DSL for Flexible Tree RewritingProceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/ 3687997.3695647(184-189)Online publication date: 17-Oct-2024 https://dl.acm.org/doi/10.1145/3687997.3695647 * Lee YGopinathan KYang ZFlatt MSergey ILaemmel RPereira JMosses P (2024)DSLs in Racket: You Want It How, Now?Proceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695645(84-103)Online publication date: 17-Oct-2024 https://dl.acm.org/doi/10.1145/3687997.3695645 * Ballantyne MGamburg MHemann J(2024)Compiled, Extensible, Multi-language DSLs (Functional Pearl)Proceedings of the ACM on Programming Languages10.1145/36746278:ICFP(64-87)Online publication date: 15-Aug-2024 https://dl.acm.org/doi/10.1145/3674627 View Options View options PDF View or Download as a PDF file. PDF eReader View online with eReader. eReader Get Access Login options Check if you have access through your login credentials or your institution to get full access on this article. Sign in Full Access Get this Article Media Figures Other Tables Share Share Share this Publication link Copy Link Copied! Copying failed. Share on social media XLinkedInRedditFacebookemail Affiliations [contrib-81] Matthew Flatt University of Utah, Salt Lake City, USA https://orcid.org/0000-0001-8994-2552 View Profile [default-pr] Taylor Allred University of Utah, Salt Lake City, USA https://orcid.org/0009-0000-7238-1816 View Profile [default-pr] Nia Angle n.n., Concord, United States https://orcid.org/0009-0000-0646-0401 View Profile [default-pr] Stephen De Gabrielle n.n., London, United Kingdom https://orcid.org/0009-0000-1706-5212 View Profile [contrib-81] Robert Bruce Findler Northwestern University, Evanston, USA https://orcid.org/0000-0002-4245-2000 View Profile [default-pr] Jack Firth n.n., Sunnyvale, United States https://orcid.org/0009-0000-7795-4986 View Profile [default-pr] Kiran Gopinathan National University of Singapore, Singapore, Singapore https://orcid.org/0000-0002-1877-9871 View Profile [contrib-88] Ben Greenman Brown University, Providence, USA https://orcid.org/0000-0001-7078-9287 View Profile [default-pr] Siddhartha Kasivajhula n.n., Oakland, United States https://orcid.org/0009-0007-5036-2877 View Profile [default-pr] Alex Knauth n.n., Williamsport, United States https://orcid.org/0009-0006-7286-0044 View Profile [contrib-81] Jay McCarthy Reach, Provo, USA https://orcid.org/0000-0002-2061-7396 View Profile [default-pr] Sam Phillips n.n., Oakland, United States https://orcid.org/0009-0009-1224-3468 View Profile [default-pr] Sorawee Porncharoenwase University of Washington, Seattle, USA https://orcid.org/0000-0003-3900-5602 View Profile [default-pr] Jens Axel Sogaard n.n., Skjern, Denmark https://orcid.org/0009-0002-3868-0593 View Profile [default-pr] Sam Tobin-Hochstadt Indiana University, Bloomington, USA https://orcid.org/0000-0003-1302-6499 View Profile Download PDF Go to Go to Show all references Request permissionsExpand All Collapse Expand Table Authors Info & Affiliations View Issue's Table of Contents Export Citations Select Citation format[BibTeX ] * Please download or close your previous search result export first before starting a new bulk export. Preview is not available. By clicking download,a status dialog will open to start the export process. The process may takea few minutes but once it finishes a file will be downloadable from your browser. You may continue to browse the DL while the export process is in progress. Download + Download citation + Copy citation Footer Categories * Journals * Magazines * Books * Proceedings * SIGs * Conferences * Collections * People About * About ACM Digital Library * ACM Digital Library Board * Subscription Information * Author Guidelines * Using ACM Digital Library * All Holdings within the ACM Digital Library * ACM Computing Classification System * Accessibility Statement Join * Join ACM * Join SIGs * Subscribe to Publications * Institutions and Libraries Connect * Contact us via email * ACM on Facebook * ACM DL on X * ACM on Linkedin * Send Feedback * Submit a Bug Report The ACM Digital Library is published by the Association for Computing Machinery. Copyright (c) 2024 ACM, Inc. * Terms of Usage * Privacy Policy * Code of Ethics ACM Digital Library home ACM Association for Computing Machinery corporate logo Your Search Results Download Request We are preparing your search results for download ... We will inform you here when the file is ready. Download now! Your Search Results Download Request Your file of search results citations is now ready. Download now! Your Search Results Download Request Your search export query has expired. Please try again.