An unsatisfiable constraint with a user-provided error message. Under an
Unsatisfiable constraint, users can use unsatisfiable to get a value of
any type (and runtime representation) they desire. For example,
instance Unsatisfiable
('Text "V1 cannot have an Applicative instance because it cannot implement pure")
=> Applicative V1 where
pure = unsatisfiable
(*) = unsatisfiable