Looks like a compiler bug. I've tested this expressions on different scala versions and what I've got for:
def f(xs: List[Int]) = (0 /: xs) _
It behaves the same for 2.9.1.final
and 2.8.2.final
but for 2.7.7.final
it fires different error message (Iterable
vs. TraversableOnes
), but I think it's because of collections library redesign in older versions.
def f(xs: List[Int]) = (0 /: xs) _
<console>:4: error: missing arguments for method /: in trait Iterable;
follow this method with `_' if you want to treat it as a partially applied function
Expression, that I mentioned in comment behaves different for different scala versions.
def f(xs: List[Int]): (Int, Int) => Int => Int = (0 /: xs)
scala 2.9.1.final:
found : (Int, Int) => Int => Int
required: (Int, Int) => Int => Int
Really confusing compiler message, definitely a bug.
scala 2.8.2.final:
found : => ((Int, Int) => Int) => Int
required: (Int, Int) => (Int) => Int
Weird =>
in the beginning, in comparison to 2.7.7.final result looks like a regression.
scala 2.7.7.final:
found : ((Int, Int) => Int) => Int
required: (Int, Int) => (Int) => Int
found
is seemingly right but code is still not working.
I searched on scala bugtracker for similar issues but could not find anything suitable. Think it's enough to create a ticket (or two? looks like this two errors are not related).