Dalam Haskell, apa perbedaan antara Int
dan Integer
? Di mana jawabannya didokumentasikan?
169
"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.
Integer
seringkali lebih cepat daripada ituInt64
diimplementasikan agak buruk pada sistem 32-bit. Pada sistem 64-bit, itu hebat.Int
adalahBounded
, yang berarti bahwa Anda dapat menggunakanminBound
danmaxBound
untuk mengetahui batas-batasnya, yang bergantung pada implementasi tetapi dijamin untuk memiliki setidaknya [-2 29 .. 2 29 -1].Sebagai contoh:
Namun,
Integer
presisi sewenang-wenang, dan tidakBounded
.sumber
https://mail.haskell.org/pipermail/haskell-cafe/2005-May/009906.html
sumber
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.
Perhatikan nilai literal Int.
sumber
...
dari laporan Haskell: http://www.haskell.org/onlinereport/basic.html#numbers
sumber
Sebuah
Integer
diimplementasikan sebagaiInt#
sampai lebih besar dari nilai maksimum yangInt#
dapat disimpan. Pada saat itu, ini adalah nomor GMP .sumber
Integer
, dan karenaInteger
itu selalu merupakan opsi yang lebih baik?