-
Chapter and Conference Paper
A Formal Treatment of Bidirectional Ty**
There has been much progress in designing bidirectional type systems and associated type synthesis algorithms, but mainly on a case-by-case basis. To remedy the situation, this paper develops a general and formal
-
Article
Unifying Parsing and Reflective Printing for Fully Disambiguated Grammars
Language designers usually need to implement parsers and printers. Despite being two closely related programs, in practice they are often designed separately, and then need to be revised and kept consistent as...
-
Article
Benchmarking bidirectional transformations: theory, implementation, application, and assessment
Bidirectional transformations (bx) are relevant for a wide range of application domains. While bx problems may be solved with unidirectional languages and tools, maintaining separate implementations of forward...
-
Chapter
Principles and Practice of Bidirectional Programming in BiGUL
Putback-based bidirectional programming allows the programmer to write only one backward transformation, from which the unique corresponding forward transformation is derived for free. A key distinguishing fea...
-
Chapter and Conference Paper
Palgol: A High-Level DSL for Vertex-Centric Graph Processing with Remote Data Access
Pregel is a popular distributed computing model for dealing with large-scale graphs. However, it can be tricky to implement graph algorithms correctly and efficiently in Pregel’s vertex-centric model, especial...
-
Chapter and Conference Paper
Algebra of Programming Using Dependent Types
Dependent type theory is rich enough to express that a program satisfies an input/output relational specification, but it could be hard to construct the proof term. On the other hand, squiggolists know very we...