Haskell Int и Integer

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

120
07 авг. '10 в 8:52
источник поделиться
6 ответов

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

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

Источник: Haskell Wikibook. Кроме того, вы можете найти Numbers раздел "Нежное введение в Haskell".

121
07 авг. '10 в 8:59
источник

Связанные вопросы


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

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

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

17
07 авг. '10 в 8:59
источник

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

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

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

11
07 авг. '10 в 9:00
источник

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)
11
17 мая '14 в 0:28
источник

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

...

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

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

5
07 авг. '10 в 9:49
источник

An Integer реализуется как Int#, пока он не станет больше максимального значения, которое может хранить Int#. В этот момент это GMP номер.

1
29 марта '16 в 5:38
источник

Посмотрите другие вопросы по меткам или Задайте вопрос