Effect Handlers in Haskell, Evidently

Algebraic effect handlers offer an alternative to monads to incorporate
effects in Haskell. In recent work Xie _et al._ show how to give
semantics to effect handlers in terms of plain polymorphic lambda
calculus through _evidence translation_. Besides giving precise
semantics, this translation also allows for potentially more efficient
implementations. Here we present the first implementation of this
technique as a library for effect handlers in Haskell. We show how the
design naturally leads to a concise effect interface and how evidence
translation enables evaluating _tail resumptive_ operations _in-place_.
We give detailed benchmark results where our library performs well with
respect to other approaches.