This is because Haskell defines negate, abs and signum for Num, but they don't work with our unsigned number types. (abs would be a noop.) Haskell has Word32 / Word64, but there negate doesn't make much sense to me. Implemented neg and abs. Implemented a type class inheritance check. Removed Integral from u8 and i8 since it wasn't implemented.