Implementing Algebraic Effects in C

APLAS'17, Asian Symposium on Programming Languages and Systems |

Published by Springer, LNCS volume 10695

Editor(s): Chang, Bor-Yuh Evan

We describe an implementation of algebraic effects and handlers
as a library in standard and portable C99, where effect operations
can be used just like regular C functions. We use a formal operational
semantics to guide the C implementation at every step where an evaluation
context corresponds directly to a particular C execution context.
Finally we show a novel extension to the semantics for optimized tail
resumptions and prove it sound. This gives two orders of magnitude improvement
to the performance of tail resumptive operations (up to about
150 million operations per second on a Core i7@2.6GHz)