Excellent piece. I really like the idea of revisiting seminal papers with the benefit of hindsight; too often it’s easy to read a paper from twenty years ago and find it really interesting, but then to be unable to find (or see) how it would be expressed in more modern idioms (or even if it survived “contact with the enemy”).
Fwiw, we can go even further and define these combinators in terms only of typeclass constraints needed on the return monad, the “finally tagless” or “mtl” style.
Same comment from HN, but may be more interesting here.
Very convincing review and replication study.