আমি নিজে চেষ্টা করব। ট্র্যাভিস ব্রাউন বা মাইলস সাবিনের কাছ থেকে আমি আরও ভাল উত্তরটি সানন্দে গ্রহণ করব।
নাট বর্তমানে বড় সংখ্যার প্রতিনিধিত্ব করতে ব্যবহার করা যাবে না
নাটের বর্তমান বাস্তবায়নে মানটি নেস্টেড শেপলেস আকারের সাথে মিলে যায় ucসুক [] প্রকারগুলি:
scala> Nat(3)
res10: shapeless.Succ[shapeless.Succ[shapeless.Succ[shapeless._0]]] = Succ()
সুতরাং 1000000 সংখ্যাটি উপস্থাপন করার জন্য, আপনার কাছে এমন এক ধরণের থাকবে যা 1000000 স্তর গভীর নীচে অবস্থিত, যা অবশ্যই স্কেল সংকলককে ফুটিয়ে তুলবে। বর্তমান সীমাটি পরীক্ষা-নিরীক্ষার থেকে প্রায় 400 বলে মনে হচ্ছে, তবে যুক্তিসঙ্গত সংকলনের সময়গুলি সম্ভবত 50 এর নীচে থেকে যাওয়া ভাল।
যাইহোক, টাইপ পর্যায়ে বৃহৎ পূর্ণসংখ্যার বা অন্যান্য মান এনকোড একটি উপায় হল, প্রদত্ত যে আপনি তাদের উপর হিসাবগুলি চাই না । আমি যতদূর জানি তাদের সাথে কেবলমাত্র আপনি যা করতে পারেন তা হ'ল তারা সমান কিনা তা পরীক্ষা করা। নিচে দেখ.
scala> type OneMillion = Witness.`1000000`.T
defined type alias OneMillion
scala> type AlsoOneMillion = Witness.`1000000`.T
defined type alias AlsoOneMillion
scala> type OneMillionAndOne = Witness.`1000001`.T
defined type alias OneMillionAndOne
scala> implicitly[OneMillion =:= AlsoOneMillion]
res0: =:=[OneMillion,AlsoOneMillion] = <function1>
scala> implicitly[OneMillion =:= OneMillionAndOne]
<console>:16: error: Cannot prove that OneMillion =:= OneMillionAndOne.
implicitly[OneMillion =:= OneMillionAndOne]
^
এটি উদাহরণস্বরূপ অ্যারে [বাইট] এ বিট অপারেশন করার সময় একই অ্যারে আকার প্রয়োগ করতে ব্যবহৃত হতে পারে।