Naprasený příklad ve Scale:
package matrix {
class Matrix(array: Array[Array[Double]]) {
  private val elements = array
  def toArray(): Array[Array[Double]] = {
    this.elements
  }
  def isSquareMatrix() : Boolean = {
    val numRows = this.elements.length
    for (subArray <- this.elements) {
      if (subArray.length != numRows) return false
    }
    return true
  }
}
class SquareMatrix(array : Array[Array[Double]]) extends Matrix(array) {
  def trace() : Float = {
    return 0; // dummy
  }
}
}
import java.lang.RuntimeException
import matrix._
object MatrixApp extends App {
  implicit def toSquareMatrix(m: Matrix) : SquareMatrix = {
    if (!m.isSquareMatrix()) throw new RuntimeException("Not a square matrix!")
    return new SquareMatrix(m.toArray())
  }
  
  val m = new Matrix(Array(Array(1.0, 2.0),Array(1.0, 2.0, 3.0)));
  println(m.trace())
}
Implicitní ve Scale umožňuje volat metody třídy SquareMatrix ad hoc, což je lepší než drátem do oka, ale samozřejmě to znamená, že se bude znovu a znovu kontrolovat, zda na to má nárok. 
Problém ale je, co s tím dál. Pro matematické problémy typu počítání s maticemi je OOP extrémně nevhodné. Matice není nic jiného než dvourozměrné pole čísel a jako taková nepotřebuje žádné metody, stačí sada funkcí, které pracují nad dvourozměrnými poli, jestli je matice čtvercová nebo ne, je jednoduchý test a stačí ho udělat jenom jednou a pak už výpočet prostě ví, že je ve větvi, kde se dá pracovat se čtvercovou maticí anebo není.
Suma sumárum, pokud to měl být příklad, byl dost nevhodný a pokud fakt autor potřebuje řešit matice, moje rada je se na celé OOP vykašlat. Nehledě na to, že knihoven pro práci s maticemi budou mraky.