  Monads are commonplace in computer science, and can be composed using Beck's
distributive laws. Unfortunately, finding distributive laws can be extremely
difficult and error-prone. The literature contains some general principles for
constructing distributive laws. However, until now there have been no such
techniques for establishing when no distributive law exists.
  We present three families of theorems for showing when there can be no
distributive law between two monads. The first widely generalizes a
counterexample attributed to Plotkin. It covers all the previous known no-go
results for specific pairs of monads, and includes many new results. The second
and third families are entirely novel, encompassing various new practical
situations. For example, they negatively resolve the open question of whether
the list monad distributes over itself, reveal a previously unobserved error in
the literature, and confirm a conjecture made by Beck himself in his first
paper on distributive laws. In addition, we establish conditions under which
there can be at most one possible distributive law between two monads, proving
various known distributive laws to be unique.
