Jawaban:
"Integer" adalah tipe presisi yang arbitrer: ia akan menampung angka berapapun besar, hingga batas memori mesin Anda…. Ini berarti Anda tidak pernah memiliki kelebihan aritmatika. Di sisi lain itu juga berarti aritmatika Anda relatif lambat. Pengguna Lisp dapat mengenali tipe "bignum" di sini.
"Int" adalah integer 32 atau 64 bit yang lebih umum. Implementasinya bervariasi, meskipun dijamin setidaknya 30 bit.
Sumber: Wikibook Haskell . Juga, Anda dapat menemukan bagian Numbers dari A Gentle Introduction to Haskell berguna.
Int64
diimplementasikan agak buruk pada sistem 32-bit. Pada sistem 64-bit, itu hebat.
Int
adalah Bounded
, yang berarti bahwa Anda dapat menggunakan minBound
dan maxBound
untuk mengetahui batas-batasnya, yang bergantung pada implementasi tetapi dijamin untuk memiliki setidaknya [-2 29 .. 2 29 -1].
Sebagai contoh:
Prelude> (minBound, maxBound) :: (Int, Int)
(-9223372036854775808,9223372036854775807)
Namun, Integer
presisi sewenang-wenang, dan tidak 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 adalah jenis bilangan bulat mesin, dengan kisaran dijamin setidaknya -2 29 hingga 2 29 - 1, sedangkan Integer adalah bilangan bulat presisi sewenang-wenang, dengan rentang sebesar memori yang Anda miliki.
https://mail.haskell.org/pipermail/haskell-cafe/2005-May/009906.html
Int adalah C int, yang artinya nilainya berkisar dari -2147483647 hingga 2147483647, sedangkan rentang Integer dari seluruh set Z , itu berarti, ia bisa berukuran besar secara sewenang-wenang.
$ ghci
Prelude> (12345678901234567890 :: Integer, 12345678901234567890 :: Int)
(12345678901234567890,-350287150)
Perhatikan nilai literal Int.
Prelude hanya mendefinisikan tipe numerik yang paling dasar: bilangan bulat berukuran tetap (Int), bilangan bulat presisi acak (Bilangan), ...
...
Tipe integer presisi-terbatas mencakup setidaknya rentang [- 2 ^ 29, 2 ^ 29 - 1].
dari laporan Haskell: http://www.haskell.org/onlinereport/basic.html#numbers
Sebuah Integer
diimplementasikan sebagai Int#
sampai lebih besar dari nilai maksimum yang Int#
dapat disimpan. Pada saat itu, ini adalah nomor GMP .
Integer
, dan karena Integer
itu selalu merupakan opsi yang lebih baik?
Integer
seringkali lebih cepat daripada itu