Can anyone explain why I see this compile error for the following when I omit the dot notation for applying the foldLeft function?(version 2.9.2)
scala> val l = List(1, 2, 3)
res19: List[Int] = List(1 ,2 ,3)
scala> l foldLeft(1)(_ * _)
<console>:9: error: Int(1) does not take parameters
l foldLeft(1)(_ * _)
^
but
scala> l.foldLeft(1)(_ * _)
res27: Int = 6
This doesn’t hold true for other higher order functions such as map which doesn’t seem to care whether I supply the dot or not.
I don’t think its an associativity thing because I can’t just invoke foldLeft(1)
It’s because foldLeft is curried. As well as using the dot notation, you can also fix this by adding parentheses:
Oh – and regarding your comment about not being able to invoke
foldLeft(l), you can, but you need to partially apply it like this: