良いコンテンツは毎回気付きを与えてくれる

最終更新日

Turing Complete FM が説明する「カリー化」

関数型プログラミング言語 Haskell には「カリー化」と呼ばれる仕組みがある。これは「『2 つの引数を取る関数』に入力値を 1 つ与えると、『もう 1 つの引数を取る新しい関数』を出力する」という仕組み。言葉で説明するとややこしいけど、下の絵を見るともう少し直感的に理解できるかも?

関数を返す関数。慣れてないと、奇妙に感じるかも知れない

「カリー化」が Turing Complete FM で分かりやすく説明されてた。ここでは Haskell を例に説明されてたけど、カリー化自体は Haskell に固有の考え方ではなく、計算論で一般的に考えられる概念だそうだ。僕はこの説明で、やっと意味を理解できた (以前から言葉は知っていたけれども)。

関数の引数が足りないときは、残りの引数を受け取る関数になるんですよね、自動的に。2 引数の関数に 1 個だけ引数を渡すと「残りの 1 個の引数を取ると結果が返ってくる関数」になる。

Turing Complete FM #28 – 46:06 付近

これを聞いて Haskell と関数型プログラミングへの理解が少し深まった。YouTube のラムダ計算の授業動画が (少し) 分かるようになったしね。上の画像のように f(x, y) と書くよりも、カリー化の表現はラムダ式で書くと綺麗: \((\lambda xy.f(x)f(y))\; x \rightarrow \lambda y.f(y)\)

型なしラムダ計算(前半) – YouTube

良いコンテンツは毎回気付きを与えてくれる

Turing Complete FM を熱心に聞いてたのは 2019 年ごろ。ハイレベルな技術者の話が単純に楽しかった。例えば #25『Chromeのローディングの最適化、脆弱性報奨システム、ブラウザとマイクロカーネル』の、Google が AMP で実現しようとする Mobile Web の支配の話とか…笑。

当時から 4 年経た 2023 年の今でも、Turing Complete FM には新鮮な面白さがある。今回は「カリー化」を遂に理解できた知的興奮。もちろん、僕が関数型プログラミングに興味を持ち、2021 年 7 月 14 日に『すごい Haskell たのしく学ぼう!』を買ったりした背景もあるけどね。

ニュース性を追い求めてないんですよね。2、3 年経って聞いても別に新しくも古くもない、みたいな感じの話をしてるつもりなので。

Turing Complete FM #28 – 1:14:08 付近

コメントを残す

%d人のブロガーが「いいね」をつけました。