Цитата map()
, указанная в вашем вопросе, является упрощенной / сокращенной версией полной подписи.
final def map[B, That](f: (A) ⇒ B)(implicit bf: CanBuildFrom[List[A], B, That]): That
Так что, если вы хотите указать параметры типа (которые почти никогда не нужны), вы должны указать оба.
val donuts1: List[Int] = List(1,2,3)
val donuts2: List[Int] = donuts1.map[Int,List[Int]](_ => 1)
//donuts2: List[Int] = List(1, 1, 1)
и я могу явно указать тип результата?
Не совсем. Параметр типа должен соответствовать тому, что возвращает f
функция / лямбда. Если вы укажете параметр типа, то вы (обычно) просто просите компилятор подтвердить, что тип результата на самом деле соответствует вашему.