प्रकारों का उल्लेख करते समय, कंपाइलर को अक्सर प्रकारों की सूची के कम से कम ऊपरी सीमा (LUB) की गणना करने की आवश्यकता होती है। उदाहरण के लिए, के प्रकार if (cond) e1 else e1
के प्रकार के एलयूबी है e1
और e1
।
ये प्रकार काफी बड़े हो सकते हैं, उदाहरण के लिए इसे REPL में आज़माएँ:
: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]...
इस प्रतिबद्ध ने इस तरह के अनुमानों की गहराई को सीमित करने के लिए कुछ संन्यास की जाँच शुरू की।
अनुमान लगाने की प्रक्रिया में प्लगइन करने के लिए हाल ही में कुछ काम किया गया है ताकि अनुमान लगाने वाले प्रकारों का पता लगाया जा सके जो गणना करने में लंबा समय लेते हैं, और उन स्थानों का सुझाव देते हैं जहां एक स्पष्ट प्रकार का एनोटेशन विवेकपूर्ण हो सकता है।