■ はじめに
Scalaの本をみて、やっと「カリー化」の意味が分かったのでメモ。 (ただ、まだ、実際のメリットがいまいち分からない)
目次
【1】カリー化(currying) 補足 【2】サンプル 例1:Hello world 【3】メリット・デメリット
【1】カリー化(currying)
* 引数が元の関数の最初の引数で、残りの引数を取って結果を返す関数を返す とか * 複数の引数を持つ関数を、いくつかの関数の組み合わる仕組み ... って言っても意味が分からないので、サンプルを見た方がいい、、、
補足
* Haskell Brooks Curry さんが考案したものだから、「Curry」 * 他の言語でも使用される => JavaScript/TypeScript などなど
【2】サンプル
例1:Hello world
import scala.io.Source import java.nio.file.{Paths, Files} import java.nio.charset.StandardCharsets object Hello { def main(args: Array[String]): Unit = { val hi = sayHello("Hi")_ // println(hi) // この時点は、まだ関数(Hello$$$Lambda$14/0x0000000100065840@727803de) val hiWithName = hi("Mike") // println(hiWithName) // この時点は、まだ関数(Hello$$$Lambda$19/0x000000010009d840@df27fae) val all = hiWithName("!!!") println(all) // Hi, Mike!!! } def sayHello(greeting: String)(name: String)(end: String): String = { return s"${greeting}, ${name}${end}" } }
【3】メリット・デメリット
1)メリット
* プログラムの共通化を図り、堅牢で安全なプログラムを作る
https://kdotdev.com/kdotdev/monkey_curry
2)デメリット
* デバッグが難しくなる
https://qiita.com/bonten999/items/9dd44a2b0a550ac1166e
関連記事
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331