Slide 17
Slide 17 text
TYPECLASS constraint IN SCALA
compareArea :: HasArea a => HasArea b => a -> b -> Float
compareArea a b = area a - area b
‑
def compareArea[A, B](a: A, b: B)
(implicit aHasArea: HasArea[A], bHasArea: HasArea[B]): Float =
aHasArea.area(a) - bHasArea.area(b)
// or, equivalently (desugars to equivalent form)
def compareArea[A: HasArea, B: HasArea](a: A, b: B): Float =
implicitly[HasArea[A]].area(a) - implicitly[HasArea[B]].area(b)
17