Pick'n'Fix: Capturing Control Flow in Modular Compilers
We present a modular framework for implementing languages with effects and control structures such as loops and conditionals. This framework enables modular definitions of both syntax and semantics as well as modular implementations of compilers and virtual machines. In order to compile control structures, in particular cyclic ones, we employ Oliveira and Cook's purely functional representation of graphs. Moreover, to separate control flow features semantically from other language features, we represent source languages using Johann and Ghani's encoding of generalised algebraic datatypes as fixpoints of higher-order functors. We demonstrate the usage of our modular compiler framework with an extended running example and highlight the extensibility of our modular compiler implementations.
Categories: Recursion Schemes, Compilers, Functional Programming
Tags: Modularity, Extensibility, Compiler, Virtual Machine, Semantics, Catamorphism, Graph, Sharing, Haskell