I can parse you: Grammars for dialogs
Martin Hirzel, Louis Mandel, et al.
SNAPL 2017
Machine-learning frameworks in Python, such as scikit-learn, Keras, Spark, or Pyro, use embedded domain specific languages (EDSLs) to assemble a computational graph. Unfortunately, these EDSLs make heavy use of strings as names for computational graph nodes and other entities, leading to repetitive and hard-to-maintain code that does not benefit from standard Python tooling. This paper proposes eliminating strings where possible, reusing Python variable names instead. We demonstrate this on two examples from opposite ends of the design space: Keras.na, a light-weight wrapper around the Keras library, and Yaps, a new embedding of Stan into Python. Our techniques do not require modifications to the underlying library. Avoiding strings removes redundancy, simplifies maintenance, and enables Python tooling to better reason about the code and assist users.
Martin Hirzel, Louis Mandel, et al.
SNAPL 2017
Martin Hirzel, Johannes Henkel, et al.
ACM SIGPLAN Notices
Guillaume Baudart, Javier Burroni, et al.
PLDI 2021
Nikitha Rao, Jason Tsay, et al.
MSR 2022