部分適用するために以下のようなExtensionを用意しておくと便利。 fun <A, B, C, T> Function3<A, B, C, T>.partial(a: A): (B, C) -> T = {b, c -> invoke(a, b, c)} 例えば以下のような引数を3つ取る関数の場合だとこのようになる。 fun example(foo: Int, bar: String, baz: Long): String = TODO() val exampleBarBaz = ::example.partial(1) val result = exampleBarBaz("BarBar", 100L) 関数exampleを ::example としてオブジェクトを参照しているのがポイント。 なお、Function2~4あたりまで何パターンか用意しておくとよいかもしれない。 Func