I agree this should be acknowledged.
In this particular case, the workaround is luckily simple:
case String.fromInt n of
Just "-1" -> True
_ -> False
I'm generally fine with language quirks like this, but I understand why others wouldn't be.