ইন্ট এবং পূর্ণসংখ্যার মধ্যে পার্থক্য কী?


169

হাস্কেলে, একটি Intএবং একটি মধ্যে পার্থক্য কি Integer? উত্তর নথিভুক্ত কোথায়?

উত্তর:


183

"পূর্ণসংখ্যা" একটি স্বেচ্ছাসেবী নির্ভুলতা ধরণের: এটি আপনার মেশিনের স্মৃতিশক্তি সীমাবদ্ধ না হওয়া যতই বড় হোক না কেন এটি কোনও সংখ্যা ধরে রাখবে। এর অর্থ আপনার গাণিতিক ওভারফ্লো কখনও হবে না। অন্যদিকে এটির অর্থ এটিও রয়েছে যে আপনার গাণিতিক তুলনামূলকভাবে ধীর। লিস্প ব্যবহারকারীরা এখানে "বিগাইনাম" প্রকারটি চিনতে পারেন।

"ইনট" হ'ল 32 বা 64 বিট পূর্ণ সংখ্যার পূর্ণসংখ্যা। প্রয়োগগুলি পৃথক হয়, যদিও এটি কমপক্ষে 30 বিট হওয়ার গ্যারান্টিযুক্ত।

সূত্র: দ্যা হ্যাস্কেল উইকিবুক । এছাড়াও, আপনি হাস্কেলের পরিচিত একটি নম্র পরিচিতির নম্বর বিভাগটি পেতে পারেন ।


এই উত্তর অনুসারে , ব্যবহার Integerপ্রায়শই দ্রুত হয়
মার্টেন

6
@ মার্টেন, এটি কেবলমাত্র Int6432-বিট সিস্টেমে খারাপভাবে প্রয়োগ করা হয়েছে। -৪-বিট সিস্টেমে এটি দুর্দান্ত।
dfeuer

21

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)

20

অন্তর্নির্মিত হ'ল মেশিন পূর্ণসংখ্যার প্রকার, গ্যারান্টিযুক্ত পরিসীমা অন্তত -২ 29 থেকে 2 29 - 1 এর মধ্যে, যখন ইন্টিজারটি নির্বিচারে নির্ভুলতা পূর্ণসংখ্যার সাথে আপনার মেমরির পরিমাণটি তত বড় with

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


10

Int সি int- এ, যার মানে তার মান যখন একটি পূর্ণসংখ্যা পুরো থেকে পরিসীমা, -2147483647 থেকে 2147483647 পরিসীমা হয় জেড , সেট মানে, এটা ইচ্ছামত বড় হতে পারে না।

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

আন্তঃ আক্ষরিক মান লক্ষ্য করুন।


2
জিএইচসিআই, সংস্করণ 7.10.3 সতর্কতা দেয়: লিটারাল 12345678901234567890 ইন্টার পরিসীমা -9223372036854775808..9223372036854775807
অ্যাডামের

5

প্রিলিউডটি কেবলমাত্র সর্বাধিক প্রাথমিক সংখ্যার প্রকারগুলি সংজ্ঞায়িত করে: স্থির আকারের পূর্ণসংখ্যা (আন্তঃ), স্বেচ্ছাসেবী যথার্থ পূর্ণসংখ্যা (পূর্ণসংখ্যা), ...

...

সসীম-নির্ভুলতা পূর্ণসংখ্যা টাইপ ইন্ট কমপক্ষে ব্যাপ্তিটি জুড়ে [- 2 ^ 29, 2 ^ 29 - 1]।

হাসেল রিপোর্ট থেকে: http://www.haskell.org/onlinereport/basic.html#numbers


4

কোনও এটি সংরক্ষণ করতে পারে এমন সর্বোচ্চ মানের চেয়ে বড় না হওয়া অবধি এটি Integerপ্রয়োগ করা Int#হয় Int#। এই মুহুর্তে, এটি একটি জিএমপি নম্বর।


2
এটি বাস্তবায়ন নির্দিষ্ট বলে মনে হচ্ছে। কোনও রেফারেন্স কি বলেছে যে এভাবে পূর্ণসংখ্যাটি কার্যকর করা দরকার?
yoniLavi

4
না, আপনি ঠিক বলেছেন, এটি জিএইচসি নির্দিষ্ট। এটি বলেছিল, ১. জিএইচসি হ'ল বেশিরভাগ লোকেরা এটি ব্যবহার করেন, ২. এই জাতীয় ডেটা প্রকারটি প্রয়োগ করার জন্য এটি সবচেয়ে বুদ্ধিমান উপায় think
নেট সিমার

এর অর্থ কি (জিএইচসিতে) ব্যবহারের জন্য কোনও কার্যকারিতা ট্রেড অফ নেই Integer, এবং তাই Integerসর্বদা সর্বোত্তম বিকল্প?
স্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.