BinderAnn: Automated Reification of Source Annotations for Monadic EDSLs
Paper in proceedings, 2020

Embedded Domain-Specific Languages (EDSLs) are an alternative to quickly implement specialized languages without the need to write compilers or interpreters from scratch. In this territory, Haskell is a prime choice as the host language. EDSLs in Haskell, however, are often incapable of reifying useful static information from the source code, namely variable binding names and source locations. Not having access to variable names directly affects EDSLs designed to generate low-level code, where the variables names in the generated code do not match those found in the source code—thus broadening the semantic gap among source and target code. Similarly, many existing EDSLs produce poor error messages due to the lack of knowledge of source locations where errors are generated.

In this work, we propose a simple technique for enhancing monadic EDSLs expressed using do notation. This technique employs source-to-source plugins, a relatively new feature of GHC, to annotate every do statement of our EDSLs with relevant information extracted from the source code at compile time. We show how these annotations can be incorporated into EDSL designs either directly inside values or as monadic effects. We provide BinderAnn, a GHC source plugin implementing our ideas, and evaluate it by enhancing existing real-world EDSLs with relatively minor modification efforts to contemplate the source-level static information related to variables names and source locations.

Embedded domain-specific languages

Haskell

Author

Claudio Agustin Mista

Chalmers, Computer Science and Engineering (Chalmers), Information Security

Alejandro Russo

Chalmers, Computer Science and Engineering (Chalmers), Information Security

Proceedings of the 21st International Symposium on Trends in Functional Programming

21st International Symposium on Trends in Functional Programming
Kraków, Poland,

WebSec: Securing Web-driven Systems

Swedish Foundation for Strategic Research (SSF), 2018-03-01 -- 2023-02-28.

Octopi: Säker Programering för Sakernas Internet

Swedish Foundation for Strategic Research (SSF), 2018-03-01 -- 2023-02-28.

Areas of Advance

Information and Communication Technology

Subject Categories

Language Technology (Computational Linguistics)

Specific Languages

Computer Science

More information

Created

2/17/2020