paperbot · PL 论文追踪

RSS

Rhombus: A New Spin on Macros without All the Parentheses

OOPSLA 7(OOPSLA2)2023
Matthew Flatt, Taylor Allred, Nia Angle, Stephen De Gabrielle, Robert Bruce Findler, Jack Firth, Kiran Gopinathan, Ben Greenman, Siddhartha Kasivajhula, Alex Knauth, Jay McCarthy, Sam Phillips, Sorawee Porncharoenwase, Jens Axel Søgaard, Sam Tobin-Hochstadt

尚未生成 AI 速览(可能缺少 API key 或等待下次运行补跑)。

原文摘要(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.

链接与引用

DOI 原文 ·

BibTeX
@article{paperbot1839,
  title = {Rhombus: A New Spin on Macros without All the Parentheses},
  author = {Matthew Flatt and Taylor Allred and Nia Angle and Stephen De Gabrielle and Robert Bruce Findler and Jack Firth and Kiran Gopinathan and Ben Greenman and Siddhartha Kasivajhula and Alex Knauth and Jay McCarthy and Sam Phillips and Sorawee Porncharoenwase and Jens Axel Søgaard and Sam Tobin-Hochstadt},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {OOPSLA2},
  year = {2023},
  doi = {10.1145/3622818}
}