В чем разница между Int
и Integer
в Haskell? Где задокументирован ответ?
"Integer" - это тип произвольной точности тип: он будет хранить любое число, независимо независимо от размера, вплоть до предела памяти вашей машины.... Это означает, что у вас никогда не будет арифметических переполнений. С другой стороны, это также означает, что ваша арифметика будет относительно медленная. Пользователи Lisp могут узнают здесь тип "bignum".
"Int" - это более распространенное 32 или 64-битное целое число. Реализации различны, хотя гарантируется, что оно должно быть не менее не менее 30 бит.
Источник: The Haskell Wikibook. Также вам может быть полезен раздел Числа в A Gentle Introduction to Haskell.
Prelude определяет только самые основные числовые типы: фиксированный размер целые числа (Int), произвольной точности целые числа (Integer), ...
...
Целочисленный тип конечной точности Int охватывает как минимум диапазон [- 2 ^ 29, 2 ^ 29 - 1].
из отчета Haskell: http://www.haskell.org/onlinereport/basic.html#numbers
Int - это тип машинных целых чисел, с гарантированной дальностью не менее От -2 29 до 2 29 - 1, а Integer - это целые числа произвольной точности с диапазон настолько велик, насколько у вас есть память.
https://mail.haskell.org/pipermail/haskell-cafe/2005-May/009906.html
Int - это C int, что означает, что его значения находятся в диапазоне от -2147483647 до 2147483647, в то время как Integer имеет диапазон из всего множества Z, то есть может быть произвольно большим.
$ ghci
Prelude> (12345678901234567890 :: Integer, 12345678901234567890 :: Int)
(12345678901234567890,-350287150)
Обратите внимание на значение литерала Int.