Swift
Swiftで関数をカリー化してみる
第一級関数がサポートされている言語なら、関数のカリー化が可能だ。
関数を動的に生成できて、それが変数に格納できたり、他の関数に渡せたり、ある関数から戻せたりできれば、その関数は第一級関数だ。
Swiftの関数は第一級関数ではないが、クロージャはこのすべてができるので、関数をカリー化することができる。
C++のラムダ式やRustのクロージャだと、値キャプチャするか参照キャプチャするかということをプログラマーが考える必要があるが、SwiftのクロージャはGoの無名関数と同じようにコンパイラがうまいことやってくれる。
例えば、下のような「2つの数値を受け取って、その和を返す」という関数をカリー化してみる。
この関数をカリー化すると、下の「addNFunc」のような感じになる。
|