Türleri çıkarırken, derleyicinin genellikle bir tür listesinin En Az Üst Sınırını (LUB) hesaplaması gerekir. Örneğin, tip if (cond) e1 else e1
türlerinin LUB olan e1
ve e1
.
Bu türler oldukça büyük olabilir, örneğin bunu bir REPL'de deneyin:
: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]...
Bu taahhüt , bu tür çıkarsanan türlerin derinliğini sınırlamak için bazı mantıklı kontroller getirdi.
Hesaplanması uzun zaman alan çıkarılan türleri tespit etmek ve açık bir tür ek açıklamasının ihtiyatlı olabileceği yerleri önermek için derleme sürecine eklenti yapmak için yeni çalışmalar yapılmıştır.