Edited at

Go言語で関数のカリー化(currying)入門

More than 5 years have passed since last update.

Alex_23drumさんのSwiftで関数のカリー化(currying)入門という記事を読んで、興味がそそられたのでGO言語に置き換えてみました。

※タイトルは、当該記事をリスペクトさせて頂きました。

カリー化についての説明は、Alex_23drumさんの記事に書かれているので、作成したコードのみ載せたいと思います。


コード

サンプルは、1+1を計算するコードです。

4.は、コードを書いているうちに思いついたので付け足して見ました。


  1. 足し算した結果

  2. 2つの引数を取るメソッド

  3. カリー化したメソッド(1)

  4. カリー化したメソッド(2)

package main

import (
"fmt"
)

func main() {
fmt.Println("1+1=", 1+1) // 1. 足し算した結果
fmt.Println("1+1=", add(1, 1)) // 2. 2つの引数を取るメソッド
add1 := cadd(1)
fmt.Println("1+1=", add1(1)) // 3. カリー化したメソッド(1)
fmt.Println("1+1=", cadd(1)(1)) // 4. カリー化したメソッド(2)
}

func add(x, y int) int {
return x + y
}

func cadd(x int) func(int) int {
return func(y int) int { return x + y }
}