  The delay monad provides a way to introduce general recursion in type theory.
To write programs that use a wide range of computational effects directly in
type theory, we need to combine the delay monad with the monads of these
effects. Here we present a first systematic study of such combinations.
  We study both the coinductive delay monad and its guarded recursive cousin,
giving concrete examples of combining these with well-known computational
effects. We also provide general theorems stating which algebraic effects
distribute over the delay monad, and which do not. Lastly, we salvage some of
the impossible cases by considering distributive laws up to weak bisimilarity.
