I had an insightful discussion on haskell-cafe on how to steal the implementation of monadic bind from a continuation monad transformer.

I did it twice, first re-inventing the two-continuation model for depth-first search, then discovering an implementation of breadth-first search that I didn’t know before.

On the go, I used higher-rank infix record selectors for the first time.

In this program I talk about monads for non-determinism, functional lists, continuations, and what you get for free when you combine them.