У меня есть несколько вопросов, связанных с картой. Здесь я спрашиваю их один за другим
1) http://twitter.github.com/scala_school/basics.html дает пример функции curried - я думал, что это определение функции, но на самом деле это не так. REPL не признает это как действительный оператор вообще.
multiplyThenFilter { m: Int => m * 2 } { n: Int => n < 5}
2) Почему мы не можем определить функцию из частично параметризованного метода? то есть что неправильно со следующим определением?
scala> def multiply(m: Int, n: Int): Int = m * n
multiply: (m: Int, n: Int)Int
scala> val timesTwo = multiply(2,_)
<console>:11: error: missing parameter type for expanded function ((x$1) => multiply(2, x$1))
val timesTwo = multiply(2,_)
^
3) Почему мы не можем сделать частично параметризованную функцию? то есть что неправильно со следующим определением?
scala> (multiply(_,_)).curried
res13: Int => (Int => Int) = <function1> // THIS IS OK
scala> (multiply(20,_)).curried
<console>:12: error: missing parameter type for expanded function ((x$1) => multiply(20, x$1))
(multiply(20,_)).curried
^