जवाबों:
"इंटेगर" एक मनमाना सटीक प्रकार है: यह किसी भी संख्या को चाहे कितनी भी बड़ी हो, आपकी मशीन की मेमोरी की सीमा तक ... इसका मतलब है कि आपके पास कभी भी अंकगणित नहीं होगा। दूसरी ओर इसका अर्थ यह भी है कि आपका अंकगणित अपेक्षाकृत धीमा है। लिस्प उपयोगकर्ता "bignum" प्रकार को यहां पहचान सकते हैं।
"इंट" अधिक सामान्य 32 या 64 बिट पूर्णांक है। कार्यान्वयन अलग-अलग होते हैं, हालांकि यह कम से कम 30 बिट होने की गारंटी है।
स्रोत: हास्केल Wikibook । इसके अलावा, आप हास्केल के लिए ए जेंटल इंट्रोडक्शन के नंबर सेक्शन को उपयोगी पा सकते हैं।
Int64
32-बिट सिस्टम पर बुरी तरह लागू किया गया है। 64-बिट सिस्टम पर, यह बहुत अच्छा है।
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)
इंट कम से कम -2 29 से 2 29 - 1 तक की गारंटी के साथ मशीन पूर्णांक का प्रकार है , जबकि इंटर्गर सटीक परिशुद्धता पूर्णांक है, जिसमें आपके लिए मेमोरी जितनी बड़ी है।
https://mail.haskell.org/pipermail/haskell-cafe/2005-May/009906.html
Int, C int है, जिसका अर्थ है कि इसका मान -2147483647 से 2147483647 तक है, जबकि पूरे Z सेट से एक इंटेगर रेंज , इसका मतलब है कि यह मनमाने ढंग से बड़ा हो सकता है।
$ ghci
Prelude> (12345678901234567890 :: Integer, 12345678901234567890 :: Int)
(12345678901234567890,-350287150)
इंट शाब्दिक के मूल्य पर ध्यान दें।
प्रस्तावना केवल सबसे बुनियादी संख्यात्मक प्रकारों को परिभाषित करता है: निश्चित आकार के पूर्णांक (इंट), मनमाने ढंग से सटीक पूर्णांक (पूर्णांक), ...
...
परिमित-सटीक पूर्णांक प्रकार Int कम से कम रेंज [- 2 ^ 29, 2 ^ 29 - 1] को कवर करता है।
हास्केल रिपोर्ट से: http://www.haskell.org/onlinereport/basic.html#numbers
एक Integer
एक के रूप में कार्यान्वित किया जाता है Int#
जब तक यह अधिकतम मूल्य एक से भी बड़ा हो जाता है Int#
स्टोर कर सकते हैं। उस समय, यह एक GMP नंबर है।
Integer
, और इसलिए Integer
हमेशा बेहतर विकल्प होता है?
Integer
करना अक्सर तेज होता है