Template Haskell ignores bad type family definitions
This garbage is accepted:
data Nat = Zero | Succ Nat $( [d| type family a + b where Maybe Zero b = b Succ a + b = Succ (a + b) |] )
Maybe photo-bombing in the first equation. The problem is that TH uses the symbol declared in the family head for all the equations, ignoring what's actually there. This is sad.