Я могу использовать оператор scalaz |>, когда я хочу переключать функцию и объект, чтобы можно было получить немного больше читаемости. Позвольте мне представить вам модельную функцию:
def length2(x:String) = x.length * 2 Теперь я могу записать ее в обоих направлениях: "aoeu" |> length2
length2("aoeu")
Но если я определю эту функцию более общей, она перестанет работать. def length2(x:SeqLike[_,_]) = x.length * 2
length2("aoeu") // ok
"aoeu" |> length2 // doesn't work
Почему компилятор этого не понимает? Существует определенно неявное преобразование из String в некоторый смешение класса в признаке SeqLike.