There's something wonky about closed type families!
If both arguments to 'Min' contain type variables, only the first rule is ever tried. The family below gives 'Min n n ~ n' but if we move the first rule down, it no longer computes!
Both Stephanie and Richard actually responded! In short, it's because Haskell let's you shoot yourself in the foot by writing non-terminating type families, but they didn't want to let that translate into letting you shoot yourself in the foot by writing segfaulting programs.
Both Stephanie and Richard actually responded! In short, it's because Haskell let's you shoot yourself in the foot by writing non-terminating type families, but they didn't want to let that translate into letting you shoot yourself in the foot by writing segfaulting programs.