Int
равно Bounded
, что означает, что вы можете использовать minBound
и maxBound
для определения пределов, которые зависят от реализации, но гарантированно будут содержать не менее [-2 29 .. 2 29 -1].
Например:
Prelude> (minBound, maxBound) :: (Int, Int)
(-9223372036854775808,9223372036854775807)
Однако Integer
- произвольная точность, а не Bounded
.
Prelude> (minBound, maxBound) :: (Integer, Integer)
<interactive>:3:2:
No instance for (Bounded Integer) arising from a use of `minBound'
Possible fix: add an instance declaration for (Bounded Integer)
In the expression: minBound
In the expression: (minBound, maxBound) :: (Integer, Integer)
In an equation for `it':
it = (minBound, maxBound) :: (Integer, Integer)