অনুমানযোগ্য ধরণের "গ্রহণযোগ্য জটিলতা" এ স্কেল কোন সীমাবদ্ধতা রাখে?


120

স্কেলা ভাষার বৈশিষ্ট অনুসারে :

... স্থানীয় ধরনের অনুমিতি অনুমিত সীমার জটিলতা [টাইপ পরামিতিগুলির] সীমাবদ্ধ করার জন্য অনুমোদিত। প্রকারের ন্যূনতমতা এবং সর্বাধিকতা গ্রহণযোগ্য জটিলতার ধরণের সেটগুলির সাথে তুলনামূলক বুঝতে হবে।

অনুশীলনে সীমা কি?

এছাড়াও, প্যারামিটার ধরণের সীমাগুলির চেয়ে অনুমানযুক্ত অভিব্যক্তির প্রকারের জন্য আলাদা আলাদা সীমাবদ্ধতা রয়েছে এবং সেই সীমাগুলি কী কী?


2
এই ব্লগটিতে এই বিষয়ে কিছু আকর্ষণীয় আলোচনা রয়েছে
জামিল

20
আমি এখানে বর্ণিত স্ক্যালাল
ডেভ এল।

1
আমি নিশ্চিত নই, তবে আমি মনে করি এটির অর্থ উদাহরণস্বরূপ আমাদের কাছে স্ট্রিংগুলির একটি তালিকা রয়েছে এবং আমরা এটিতে একটি int যুক্ত করছি। ফিরে আসা অপরিবর্তনীয় তালিকাটি শেষ পর্যন্ত "যেকোন" টাইপের of তাই প্রকারের সর্বাধিকতা
যতীন

8
এটি প্রকৃতপক্ষে একটি চলমান লক্ষ্য কারণ স্কেল সংকলকের বিভিন্ন সংস্করণের আলাদা সীমা রয়েছে। এটি পরিবর্তিত হয়েছে এবং আমি আশা করি ভাষার বিকাশ অব্যাহত থাকায় কমপক্ষে নিকটতম সময়ের ভবিষ্যতের জন্যও এই পরিবর্তনটি অবিরত থাকবে। আমি এই প্রশ্নটি নীচে ভোট দিচ্ছি কারণ এটি বর্তমানে যেমন বলা আছে তেমন উত্তর দেওয়া যায় না।
কেভিন সিতজে

1
@ কেভিন সত্যই। আমি মনে করি যে আমি স্কেল ২.৯-এ সবচেয়ে আগ্রহী, কারণ এটি সাম্প্রতিক হলেও স্থিতিশীল। তবে আমি ভাবছি কতটা বদলে যাবে।
ওয়েন

উত্তর:


10

অনুকরণকারী প্রকারগুলি যখন, সংকলকটি প্রায়শই প্রকারের তালিকার সর্বনিম্ন উচ্চতম বাউন্ড (LUB) গণনা করতে হবে। উদাহরণস্বরূপ, ধরণ if (cond) e1 else e1ধরনের Lub হয় e1এবং e1

এই প্রকারগুলি বেশ বড় আকার ধারণ করতে পারে, উদাহরণস্বরূপ একটি রিপল চেষ্টা করুন:

:type Map(1 -> (1 to 10), 2 -> (1 to 10).toList)
scala.collection.immutable.Map[Int,scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int] with Serializable{def reverse: scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]{def reverse: scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def dropRight(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def takeRight(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def drop(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def take(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]}; def dropRight(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]{def reverse: scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def dropRight(n: Int): scala.collection.immutable.Seq[Int]...

এই প্রতিশ্রুতিবদ্ধকরণগুলি এই জাতীয় অনুমানযুক্ত ধরণের গভীরতা সীমাবদ্ধ করার জন্য কিছু বিচক্ষণতার পরীক্ষা করে।

গণনা করতে দীর্ঘ সময় নেয় এমন অনুমানকৃত ধরণগুলি সনাক্ত করতে সংকলন প্রক্রিয়াটিতে প্লাগইন করার জন্য সাম্প্রতিক কিছু কাজ হয়েছে এবং যেখানে স্পষ্টত প্রকারের টীকাগুলি বুদ্ধিমান হতে পারে সেই জায়গাগুলির পরামর্শ দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.