This is a “heuristic” guess, unlikely to work at all instances, but sufficient enough for most cases.
its functionality is replaced by the 'sFromIntegral' function. Programs using the functions 'signCast' and 'unsignCast' should simply replace both with calls to 'sFromIntegral'. (Note that extra type-annotations might be necessary, similar to the uses of the 'fromIntegral' function in Haskell.)
HasKind and SymWord can simply be derived now
C behavior is undefined for negative numbers when the target type is unsigned; so explicitly avoid that.