En Haskell, quelle est la différence entre un Int
et un Integer
? Où la réponse est-elle documentée ?
Selon le cette réponse , en utilisant Integer
est souvent plus rapide que le
En Haskell, quelle est la différence entre un Int
et un Integer
? Où la réponse est-elle documentée ?
"Integer" est une précision arbitraire précision arbitraire : il peut contenir n'importe quel n'importe quel nombre, jusqu'à la limite de la de la mémoire de votre machine . Cela signifie que vous n'aurez jamais débordements arithmétiques. D'autre part d'autre part, cela signifie également que votre arithmétique est relativement lente. Les utilisateurs de Lisp peuvent reconnaître le type "bignum" ici.
"Int" est le plus courant des nombres entiers de 32 ou 64 bits. ou 64 bits. Les implémentations varient, bien qu'il soit gua au moins 30 bits.
Fuente: Le Wikibook Haskell . Vous pouvez également trouver le Chiffres section de Une introduction en douceur à Haskell utiles.
Int
es Bounded
ce qui signifie que vous pouvez utiliser minBound
y maxBound
pour trouver les limites, qui dépendent de l'implémentation mais qui sont garanties au moins [-2 29 .. 2 29 -1].
Par exemple :
Prelude> (minBound, maxBound) :: (Int, Int)
(-9223372036854775808,9223372036854775807)
Cependant, Integer
est une précision arbitraire, et non 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)
Int est le type de machine avec une plage garantie d'au moins -2 29 à 2 29 - 1, tandis que Entier est une précision arbitraire aussi grande que la mémoire dont vous disposez.
https://mail.haskell.org/pipermail/haskell-cafe/2005-May/009906.html
Int est le C int, ce qui signifie que ses valeurs sont comprises entre -2147483647 et 2147483647, tandis qu'un Integer s'étend de l'entier Z c'est-à-dire qu'il peut être arbitrairement grand.
$ ghci
Prelude> (12345678901234567890 :: Integer, 12345678901234567890 :: Int)
(12345678901234567890,-350287150)
Remarquez la valeur du littéral Int.
Le prélude définit uniquement les plus basiques : entiers de taille fixe (Int) entiers de taille fixe (Int), entiers de précision arbitraire (Integer), ... précision arbitraire (Integer), ...
...
L'inte couvre au moins l'intervalle [ - 2^29, 2^29 - 1].
du rapport Haskell : http://www.haskell.org/onlinereport/basic.html#numbers
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.