curried
trait Function[X1, X2..., Xn, Y] { def curried: (X1) => (X2) => ... => (Xn) => Y }
curried は、元の関数の1つ目のパラメーターを処理して残りの引数を取る関数を作成します。続いてその関数は、元の関数の2つ目のパラメーターを処理して残りの引数を取る関数を作成します。…というのが、すべてのパラメーターがなくなるまで続き、最終的な結果が計算されます。