Update (March 29, 2021) The design was simplified by changing handle to more closely match call-with-prompt. This eliminated some unnecessary (and probably confusing) explanatory text. I also added a footnote explaining the “lazy” design of the effectful DSL of part 3.
Introduction This is an exploration of an extensible effects system implemented in Guile Scheme. It is based on a post by Oleg Kiselyov called Having an Effect1. Most of the ideas described below are Oleg’s; the few original ones arose in the process of translating the original Haskell code to Guile Scheme.