Here’s a fun trick. If you want to define a function that accepts everything but one type, you can make a type family like this. If the two types unify, we produce the type `'False`

of kind `Bool`

.

You can use it like this:

The argument can be any type `i`

that doesn’t unify with `Word8`

. So this type-checks:

But this doesn’t:

Not that I have a use for this. It was just discussed at work.