Я хотел бы реализовать функцию параметризации типа в соответствии с размером упражнения на стр. 72 книги (реализовать с использованием фильтра):
def forallA[B <: A](xs:List[A])(f:A => B) : List[B] = {
xs.filter(x => true) match {
case Nil => Nil
case y :: ys => f(y) :: forallA(ys)(f)
}
}
Однако компилятор (2.9.1) жалуется на то, что тип A не определен. Очевидно, что это не должно иметь место, так как несколько примеров в одной книге используют этот синтаксис. Эту проблему можно устранить, изменив параметр типа функции на [A, B <: A]
. Я делаю что-то не так или это потрясающее изменение в спецификации синтаксиса Scala? Если так, то, честно говоря, я устал от бомбежек ТАК с такими глупыми вопросами на каждом втором упражнении. Кто-нибудь может порекомендовать книгу, которая четко отражает текущий порядок вещей?