Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
カリー化入門 / currying
Search
Nishimura Yuki
July 26, 2019
Programming
0
31
カリー化入門 / currying
あくあたん工房2019年7月部会のLTです
Nishimura Yuki
July 26, 2019
Tweet
Share
More Decks by Nishimura Yuki
See All by Nishimura Yuki
特に作りたいものがない人のためのプログラミング入門
ni5h1
0
91
モンスターマシンを起こすBotを作った話 / wake up bot
ni5h1
0
16
Other Decks in Programming
See All in Programming
A New Era of Testing
mannodermaus
2
510
ドメイン駆動設計を実践するために必要なもの
bikisuke
4
330
Prompt Cachingは本当に効果的なのか検証してみた.pdf
ttnyt8701
0
530
Go1.23で入った errorsパッケージの小さなアプデ
kuro_kurorrr
2
390
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
590
o1モデルのプロンプトエンジニアリングって?
ktc_wada
0
270
Scala におけるコンパイラエラーとの付き合い方
chencmd
2
430
Amazon Neptuneで始める初めてのグラフDB ー グラフDBを使う意味を考える ー
satoshi256kbyte
2
260
unique パッケージから学ぶ interning と weak reference @ Asakusa.go#3
karamaru
2
810
エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
bicstone
5
1.5k
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
150
Featured
See All Featured
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Optimising Largest Contentful Paint
csswizardry
31
2.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
36
6.8k
The Cult of Friendly URLs
andyhume
76
6k
4 Signs Your Business is Dying
shpigford
179
21k
Designing Experiences People Love
moore
138
23k
[RailsConf 2023] Rails as a piece of cake
palkan
48
4.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
8.9k
Testing 201, or: Great Expectations
jmmastey
36
7k
A designer walks into a library…
pauljervisheath
201
24k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
WebSockets: Embracing the real-time Web
robhawkes
59
7.3k
Transcript
カリー化入門 2019年あくあたん工房7月部会
そもそも カリー化って何?
カリー化 (currying, カリー化された =curried) とは、複数の引数をとる関数 を、引数が「もとの関数の最初の引 数」で戻り値が「もとの関数の残りの 引数を取り結果を返す関数」であるよ うな関数にすること(あるいはその関 数のこと)である。
出典:ウィキペディア
つまり、
N個の引数をとる関数 一引数を取る関数のチェイン
具体例
𝑓: 𝑥 → 𝑦 関数が引数を一つのみとる つまり、 すでにカリー化されている 引数を1個とる関数の場合
𝑓: 𝑥, 𝑦 → 𝑧 ↓ 𝑔: 𝑥 → (ℎ:
𝑦 → 𝑧) 引数を2個とる関数の場合
𝑓: 𝑥, 𝑦, 𝑧 → 𝑢 ↓ 𝑔: 𝑥 →
(ℎ: 𝑦 → (𝑖: 𝑧 → 𝑢)) 引数を3個とる関数の場合
何が うれしいの?
具体例として, 2つの引数の合計を返す関数f(x, y) をmap関数に渡す場合を考える
カリー化 されていないとき
func f(x,y) int { return x + y } func
g(x) int { return f(1, x) } list2 = map(g, list1)
カリー化 されているとき
func f(x,y) int { return x + y } list2
= map(g(1), list1)
部分適用で よくね
できることは同じ
func f(x,y) int { return x + y } g
= partial(f, 1) list2 = map(g, list1)
おまけ Pythonでカリー化
>>> currying.f("a")("b")("c") 'abc' カリー化されてる関数
>>> currying.f("a")("b")("c") 'abc' 関数をカリー化する関数
ご清聴ありがとう ございました