This is why I like programming languages with type systems and "numerical towers":
Prelude> "9223372036854775807" == "9223372036854775808"
False
Prelude> "9223372036854775807" == 9223372036854775808
<interactive>:1:25:
No instance for (Num [Char])
arising from the literal `9223372036854775808'
at <interactive>:1:25-43
Possible fix: add an instance declaration for (Num [Char])
In the second argument of `(==)', namely `9223372036854775808'
In the expression: "9223372036854775807" == 9223372036854775808
In the definition of `it':
it = "9223372036854775807" == 9223372036854775808
Prelude>
Yes. Strings are not numbers.