В чем разница между Int и Integer?

В чем разница между Int и Integer в Haskell? Где задокументирован ответ?

160
задан duplode 6 April 2018 в 13:11
поделиться

4 ответа

"Integer" - это тип произвольной точности тип: он будет хранить любое число, независимо независимо от размера, вплоть до предела памяти вашей машины.... Это означает, что у вас никогда не будет арифметических переполнений. С другой стороны, это также означает, что ваша арифметика будет относительно медленная. Пользователи Lisp могут узнают здесь тип "bignum".

"Int" - это более распространенное 32 или 64-битное целое число. Реализации различны, хотя гарантируется, что оно должно быть не менее не менее 30 бит.

Источник: The Haskell Wikibook. Также вам может быть полезен раздел Числа в A Gentle Introduction to Haskell.

172
ответ дан 23 November 2019 в 21:31
поделиться

Prelude определяет только самые основные числовые типы: фиксированный размер целые числа (Int), произвольной точности целые числа (Integer), ...

...

Целочисленный тип конечной точности Int охватывает как минимум диапазон [- 2 ^ 29, 2 ^ 29 - 1].

из отчета Haskell: http://www.haskell.org/onlinereport/basic.html#numbers

5
ответ дан 23 November 2019 в 21:31
поделиться

Int - это тип машинных целых чисел, с гарантированной дальностью не менее От -2 29 до 2 29 - 1, а Integer - это целые числа произвольной точности с диапазон настолько велик, насколько у вас есть память.

https://mail.haskell.org/pipermail/haskell-cafe/2005-May/009906.html

19
ответ дан 23 November 2019 в 21:31
поделиться

Int - это C int, что означает, что его значения находятся в диапазоне от -2147483647 до 2147483647, в то время как Integer имеет диапазон из всего множества Z, то есть может быть произвольно большим.

$ ghci
Prelude> (12345678901234567890 :: Integer, 12345678901234567890 :: Int)
(12345678901234567890,-350287150)

Обратите внимание на значение литерала Int.

10
ответ дан 23 November 2019 в 21:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: