LoginSignup
13
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-08-08

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 }
}
13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10