How hard would it be to lift strictness annotations to type-level? E.g. instead of
f :: Int -> Int
f !x = x + 1
write
f :: !Int -> Int
f x = x + 1
which would have the same effect. At least it would be transparent to the developer using a particular function.