В
Size: a a a
В
H
KR
@tailrecэто функция, которая принимает 2 явных параметра и один неявный
def find[A, B](key: A, xs: List[A])(implicit e: Eq[A]): Maybe[A] = xs match {
case Nil => Nothing
case x :: xs => if (e.eq(key, x)) Just(x) else find(key, xs)
}
e.A и список значений того же типа A, найти его первое вхождение, если оно там есть.find<A: Eq>.val xs = List(1, 2, 3)то компилятор ищет в текущем неявном скоупе какой-нибудь объект типа
val y = find(4, xs)
Eq[Int] и если он его находит в единственном экземпляре, то подставляет туда и формирует вызов. Ошибкой является как то, что объекта такого типа не находится, так и то, что таких объектов больше одного.p
В
H
KR
p

H
В
p

H
H
H
KR
H
p

H
JM
H