Saat menyimpulkan tipe, compiler sering kali perlu menghitung Least Upper Bound (LUB) dari daftar tipe. Misalnya, tipe if (cond) e1 else e1adalah LUB dari tipe e1dan e1.
Jenis ini bisa menjadi cukup besar, misalnya coba ini di 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]...
Komitmen ini memperkenalkan beberapa pemeriksaan kewarasan untuk membatasi kedalaman tipe yang disimpulkan tersebut.
Ada beberapa pekerjaan baru-baru ini untuk dimasukkan ke dalam proses kompilasi untuk mendeteksi tipe yang disimpulkan yang membutuhkan waktu lama untuk dihitung, dan menyarankan tempat di mana anotasi tipe eksplisit mungkin lebih bijaksana.